【发布时间】:2023-01-02 02:31:00
【问题描述】:
有人可以指导我如何在上传文件之前检查文件是否已存在于数据库中吗?
我想将文件上传到数据库,但在保存之前,我想先检查文件是否已经存在。如果是,则不要执行插入。
我在上传文件时使用了这个reference。
非常感谢你。
【问题讨论】:
-
您如何将文件存储在数据库中?什么标准会表明该文件已经存在?文件名?文件大小?文件本身的二进制差异?
-
存储文件名 n 文件大小..thx
标签: php
有人可以指导我如何在上传文件之前检查文件是否已存在于数据库中吗?
我想将文件上传到数据库,但在保存之前,我想先检查文件是否已经存在。如果是,则不要执行插入。
我在上传文件时使用了这个reference。
非常感谢你。
【问题讨论】:
标签: php
我不确定这是否是您要问的,但是您是否使用过 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';
【讨论】:
从您链接到的文章来看,执行此查询时,文件被视为“已上传到数据库”:
$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 和/或sha1).
顺便说一句 2:在没有真正理解的情况下使用本文中提供的代码之前,您应该阅读一些关于 SQL Injections 的内容:以下部分代码,从“下载文件的代码”部分,相当吓人,例如:
$id = $_GET['id'];
$query = "SELECT name, type, size, content " .
"FROM upload WHERE id = '$id'";
【讨论】: