在 PHP 中上传时 $_FILES 为空
$_FILES is empty when upload in PHP
我使用 dropzone.js 在前端处理上传部分,使用 JQuery。
我的测试用例是:
上传一个 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
是空的,如何解决?非常感谢。
34MB + 27MB = 61MB。
所以你会 post61MB。
默认的 PHP 值对于 upload_max_filesize 是 2 MB,对于 post_max_size 是 8 MB。根据您的主机,可以在许多地方更改这两个 PHP 变量,最有可能是 php.ini 或 .htaccess(取决于您的主机情况)
你在 php.ini 中检查过这些了吗?
上传的每个文件的最大允许大小。
upload_max_filesize = 40M
必须大于或等于 upload_max_filesize,这是每个 post 事件中所有上传文件的总大小。
post_max_size = 40M
如果您想上传最大文件大小为 500mb,则可以将以上两个值都设置为 500mb。请记住,如果您上传多个文件,post_max_size 需要是每个 post 事件的上传文件的总文件大小。所以如果你上传两个 500mb 的文件,你会设置 upload_max_filesize =501M 和 post_max_size = 1001M
我使用 dropzone.js 在前端处理上传部分,使用 JQuery。
我的测试用例是:
上传一个 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
是空的,如何解决?非常感谢。
34MB + 27MB = 61MB。
所以你会 post61MB。
默认的 PHP 值对于 upload_max_filesize 是 2 MB,对于 post_max_size 是 8 MB。根据您的主机,可以在许多地方更改这两个 PHP 变量,最有可能是 php.ini 或 .htaccess(取决于您的主机情况)
你在 php.ini 中检查过这些了吗?
上传的每个文件的最大允许大小。
upload_max_filesize = 40M
必须大于或等于 upload_max_filesize,这是每个 post 事件中所有上传文件的总大小。
post_max_size = 40M
如果您想上传最大文件大小为 500mb,则可以将以上两个值都设置为 500mb。请记住,如果您上传多个文件,post_max_size 需要是每个 post 事件的上传文件的总文件大小。所以如果你上传两个 500mb 的文件,你会设置 upload_max_filesize =501M 和 post_max_size = 1001M