php检查文件是否存在

时间:2009-12-01 20:00:00

标签: php

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

我想将文件上传到数据库中,但在保存之前,我想先查看已存在的文件。如果是,则不执行插入执行。

我使用此reference对文件进行了上传。

非常感谢你。

2 个答案:

答案 0 :(得分: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';

答案 1 :(得分: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'

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


顺便说一句:为了避免检查整个文件的内容,解决方案可能是在上传表中添加一个新列,以存储文件的某种哈希值(参见md5和/或{{ 3}}例如)


顺便说一下2:在使用本文中提供的代码之前,您应该先阅读sha1,但不要理解它:下面的代码部分,从“代码下载文件“部分,非常可怕,例如:

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