在 PHP 中上传时 $_FILES 为空

Posted

技术标签:

【中文标题】在 PHP 中上传时 $_FILES 为空【英文标题】:$_FILES is empty when upload in PHP 【发布时间】:2015-08-22 17:08:19 【问题描述】:

我正在使用 dropzone.js 处理前端的上传部分,使用 JQuery。

http://www.dropzonejs.com/

我的测试用例是:

上传一个 34 MB 的文件。工作正常... 上传一个 27 MB 的文件。工作正常... 上传两个文件,每个文件大小为 5 MB。工作正常... 上传两个文件,34 MB + 27 MB。 失败 , $_FILES 是一个空数组

JQuery 代码如下:

<script>
    $(document).ready(function () 
        Dropzone.options.myAwesomeDropzone = 
            autoProcessQueue: false,
            url: '<?= site_url("admin/video/upload"); ?>',
            addRemoveLinks: true,
            previewsContainer: ".dropzone-previews",
            uploadMultiple: true,
            parallelUploads: 50,
            maxFilesize: 500, //500MB
            acceptedFiles: 'video/*',
            maxFiles: 100,
            init: function () 
                var myDropzone = this;

                myDropzone.on("success", function (file, response) 
                    $("#success, #fail").hide();
                    $("#" + response).show();
                );

                myDropzone.on("maxfilesexceeded", function (file) 
                    this.removeFile(file);
                );

                $("#submit-all").click(function (e) 
                    e.preventDefault();
                    e.stopPropagation();
                    myDropzone.processQueue();
                );
            
        
    );
</script>

这是 php 代码:

public function upload() 
    die(var_dump($_FILES));

那么,为什么$_FILES 是空的,如何解决?非常感谢。

【问题讨论】:

这里可能的答案:http://***.com/a/6135485/3648578 【参考方案1】:

34 MB + 27 MB = 61 MB。

所以你会发布 61MB。

upload_max_filesize 的默认 PHP 值为 2 MB,post_max_size 的默认值为 8 MB。根据您的主机,可以在多个位置更改这两个 PHP 变量,最有可能是 php.ini 或 .htaccess(取决于您的主机情况)

您是否在 php.ini 中检查过这些内容?

每个上传文件的最大允许大小。

upload_max_filesize = 40M

必须大于或等于upload_max_filesize,这是每个帖子事件中所有上传文件的总大小。

post_max_size = 40M

如果您想上传的最大文件大小为 500mb,则可以将上述两个值都设置为 500mb。请记住,如果您上传多个文件,则 post_max_size 需要是每个发布事件的上传文件的组合文件大小。所以如果你上传了两个 500mb 的文件,你会设置 upload_max_filesize =501M 和 post_max_size = 1001M

【讨论】:

但是为什么可以上传一个 34mb 和另一个 27mb 的文件,但是当尝试上传两个 34mb 和 27mb 的文件时,错误来了?解释是什么? 我发表评论是因为我认为您需要在回答中向 OP 解释这一点 ;-)

以上是关于在 PHP 中上传时 $_FILES 为空的主要内容,如果未能解决你的问题,请参考以下文章

AJAX PHP 图片上传不起作用,$_FILES 为空?

$_FILES 数组在不上传任何内容时不为空

PHP中表单没有问题但是$_FILES为空的解决办法

PHP 文件上传之常见问题($_FILES为空,move_uploaded_file()函数报错)

AJAX 上传后 $_FILES 为空

$_files 在 Phonegap/Cordova 中的图像上传中为空 [关闭]