【问题标题】:How to bypass a file upload script when a file is not uploaded未上传文件时如何绕过文件上传脚本
【发布时间】:2020-02-20 03:33:57
【问题描述】:

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

PHP 注意:未定义索引:uploadFile

错误与这行代码直接相关:

$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 ( !isset($_FILES['uploadedFile']['error']) ) { // then you have a file uploaded
  • @RiggsFolly 与检查它是否不为空相比,这样做有什么好处吗?
  • isset 如果不存在会抛出警告,使用 !empty

标签: javascript php file file-upload


【解决方案1】:

你可以使用empty查看是否有文件附件

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

empty 如果没有找到任何内容(例如 isset 或 count),则不会生成通知或警告

【讨论】:

  • 你是说把上传函数的所有子元素都包装在那个 if 语句中吗?
  • 来自手册 ... 如果变量不存在,则为空不会生成警告。这意味着 empty() 本质上等同于 !isset($var) || $var == false。
猜你喜欢
  • 2021-07-04
  • 2016-08-07
  • 1970-01-01
  • 1970-01-01
  • 2012-09-18
  • 2012-05-31
  • 1970-01-01
相关资源
最近更新 更多