首页 > 解决方案 > 未上传文件时如何绕过文件上传脚本

问题描述

我有一个发送文本输入和有时文件的表单。对于未上传文件的情况,我遇到了问题。目前,如果表单提交中不包含文件,我会收到以下错误:

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;

标签: javascriptphpfilefile-upload

解决方案


您可以检查是否有使用空的文件附件

if (!empty($_FILES["uploadedFile"]["name"])) {

如果没有发现任何内容,例如 isset 或 count,empty 不会生成通知或警告


推荐阅读