2009-12-01 168 views
3

有人可以指导我如何检查以确定文件是否已经存在于数据库中或没有上传之前?php检查文件是否存在

我想上传一个文件到数据库中,但在保存之前,我想先检查文件是否已经存在。如果是,那么不要执行插入操作。

我使用这个reference上传文件。

非常感谢。

+2

你如何在数据库中存储文件?什么标准会表明文件已经存在?文件名?文件大小?文件本身的二进制差异? – 2009-12-01 20:06:18

+0

存储文件名n filesize..thx – user147685 2009-12-05 02:33:38

回答

18

我不确定这是你问的问题,但你有使用PHP内置函数file_exists(ABSOLUTE-PATH-TO-FILE)吗?

$exists = file_exists('myfile.doc'); 
if(!$exists) { 
// do your processing 
} 

http://php.net/manual/en/function.file-exists.php

如果您正在检查的数据库,那么就查询任何列可能会牵着你的文件,例如:

SELECT * FROM my-table WHERE my-column = 'my-uploaded-file-name'; 
+0

所以,你检查它是否存在不正确?只是要确定.. – Syno 2017-02-27 13:12:06

2

从您链接到文章,文件评审在执行该查询时被视为“已上传到数据库”:

$query = "INSERT INTO upload (name, size, type, content) ". 
"VALUES ('$fileName', '$fileSize', '$fileType', '$content')"; 

这意味着一种检查文件“已上传到数据库”的方法是在文件上传时检查数据库中是否有相同的名称,文件,类型和内容那当前的那个。

我想这样的条目可以使用查询像这样一个被取出:

select * 
from upload 
where name = '$fileName' 
    and size = '$fileSize' 
    and type = '$fileType' 
    and content = '$content' 

如果查询返回的结果,您的文件可能已经是“数据库”。


BTW:为了避免检查整个文件的内容,解决方案可能是一个新列添加到您的上传表,用于存储某种文件的哈希值(见md5和/或sha1为实例)


BTW 2:你应该读一些关于SQL Injections,使用并没有真正理解它在这篇文章中介绍的代码之前:下面的代码部分,复制/粘贴“代码下载文件”节,是相当可怕的,例如:

$id = $_GET['id']; 
$query = "SELECT name, type, size, content " . 
     "FROM upload WHERE id = '$id'";