我正在通过dropzone.js向我的PHP服务器发送一些文件。我在验证PHP端发送的最大文件时遇到问题。即使我将使用maxFiles
param for dropzone.js,我也希望确保没有多少奇怪的事情被发送超过需要。主要问题是dropzone可以按POST请求发送文件,所以我不能简单地count($_FILES)
,因为总会有1个。
所以我决定使用会话ID和字段哈希将临时上传存储在数据库中,并选择该哈希上传的计数。
不幸的是,这不能按预期工作,因为另一个请求的发送速度太快。
代码是:
if ($request->ajax())
{
$hash = md5(Session::getId() . '_myupload');
$count = DB::query("SELECT COUNT(id) FROM temp_uploads WHERE hash = ?")->param($hash)->execute();
echo $count; // 0
// Store the file
DB::query("INSERT INTO temp_uploads (key) VALUES (?)")->param($hash)->execute();
$request->file('myupload')->store('uploads');
}
我正在上传两个文件,第二个请求是在INSERT查询完成执行之前发送的。
如何在PHP中正确验证来自多个请求的最大文件?