php - 确定文件是否存在于多文件php上传中
问题描述
我有一个带有 3 个独立上传输入的表单
<input name="upload[]" type="file" accept="application/pdf,application/vnd.ms-excel" />
<input name="upload[]" type="file" accept="application/pdf,application/vnd.ms-excel" />
<input name="upload[]" type="file" accept="application/pdf,application/vnd.ms-excel" />
因此,我有一个可能包含 3 个文件的“上传”数组,其中 2 个是用户必须选择的,第三个是可选的
我想在提交到服务器时,确定是否已分别为文件 1 和文件 2 选择了文件
我已经使用了这段代码,但它告诉我的只是是否选择了任何文件,而不是专门针对文件 1 和文件 2:
for($i=0; $i<3; $i++) {
$tmpFilePath = $_FILES['upload']['tmp_name'][$i];
$strl = strlen($tmpFilePath) . $strl;
if($strl==???){
}
//do something
}
' 的想法。$strl' 我认为如果 for 代码在数组中循环,它会捕获每个临时名称(x 个字符长),但是无论我输入 1、2 还是 3 个文件,它总是返回相同的:14 或一个链接,例如:/tmp/phpVniKUq
我用上面的代码假设如果存在 2 个文件 $strl 将是 28,存在 3 个文件 42
解决方案
您真的不应该尝试检查文件名长度。不能保证它们的长度为 14 个字符。
相反,您应该检查$_FILES
全局错误代码(或检查文件大小)并根据成功上传继续,如下所示:
<?php
var_dump($_FILES['upload']);
$uploadedCount = 0;
foreach($_FILES['upload']['error'] as $err) {
if ($err === UPLOAD_ERR_OK) {
$uploadedCount += 1;
}
}
var_dump($uploadedCount);
?>
<form method="POST" enctype="multipart/form-data">
<input name="upload[]" type="file" />
<input name="upload[]" type="file" />
<input name="upload[]" type="file" />
<button>upload</button>
</form>
这会检查输入的错误代码并显示 PHP [0] 报告成功的文件数
推荐阅读
- python - Python:装饰器中的 Lambda 函数详细信息
- excel - 选择特定选项按钮时选项按钮变灰
- c# - 如果指针结束的对象被停用,为什么不调用 OnPointerExit
- c++ - 代码编译没有任何输出,启动程序
- firebase - 这些模型中的哪一个是 Cloud Firestore 中更好的方法?
- mongoose - 无法使用 JWT 在博客文章 MERN 堆栈中填充作者
- php - PHP将字符串拆分为整数、字符串和特殊字符
- postgresql - 按月和按年的第一个记录
- ios - 有没有办法让 svg 图标适应苹果系统字体?
- ios - 如何使用 swift 制作自定义视频播放器