javascript - 未上传文件时如何绕过文件上传脚本
问题描述
我有一个发送文本输入和有时文件的表单。对于未上传文件的情况,我遇到了问题。目前,如果表单提交中不包含文件,我会收到以下错误:
PHP 注意:未定义索引:uploadedFile
该错误与这行代码直接相关:
$file_count = count($_FILES['uploadedFile']['name']);
我知道错误在说什么。我的问题是我可以将文件计数预定义为 0,因为当文件没有上传到可以翻译为 PHP 的 javascript 中时。或者有没有办法在运行之前检查它是否设置$file_count
?
但是,整个脚本中出现的次数更多。我会在函数声明之后放一个 if 语句吗?
public function upload() {
$file_count = count($_FILES['uploadedFile']['name']);
$results = [];
for ($i = 0; $i<$file_count; $i++) {
//echo $file['uploadedFile']['name'][$index] . "\n";
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["uploadedFile"]["name"][$i]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
return 0;
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["uploadedFile"]["tmp_name"][$i], $target_file)) {
$results[] = basename($_FILES["uploadedFile"]["name"][$i]);
} else {
return 0;
}
}
}
return $results;
解决方案
您可以检查是否有使用空的文件附件
if (!empty($_FILES["uploadedFile"]["name"])) {
如果没有发现任何内容,例如 isset 或 count,empty 不会生成通知或警告
推荐阅读
- java - parallelStream 处理的线程与 JPA/eclipse 链接不兼容
- php - PHP/json_encode:处理具有数字属性的混合数组和对象
- javascript - 如何将 JavaScript 连接到 SQL 服务器?
- node.js - 有没有办法以恒定的速度下载文件?
- mysql - mysql:从子查询中获取两个值
- python - Pandas:有没有办法比较两个系列并找到一个系列中最近的元素,而不是另一个系列?
- html - 列边框和标题不对齐
- python - 从输入语句打印提示?
- windows - 带类的 PowerShell 脚本不会在 Windows 10 上执行
- javascript - Wordpress 脚本和样式插件包括脚本选项