我的 $_FILES 数组是空的,即使数据是通过网络发送的
My $_FILES array is empty even though data being is sent over the wire
我有以下表格...
<form class="clearfix" action="/application_submit.php" method="post" enctype="multipart/form-data" name="applicationForm" id="applicationForm">
<!-- 100 text/select/option inputs or so that I won't include here... -->
<div class="line">
<div class="unit size1of1">
<label class="field_label" for="freeform_application_attachments">Attachments</label>
<input type="file" name="file_attachments_1" value="" id="freeform_application_attachments0" /><br/>
<input type="file" name="file_attachments_2" value="" id="freeform_application_attachments1" /><br/>
<input type="file" name="file_attachments_3" value="" id="freeform_application_attachments2" /><br/>
<input type="file" name="file_attachments_4" value="" id="freeform_application_attachments3" /><br/>
<input type="file" name="file_attachments_5" value="" id="freeform_application_attachments4" />
</div>
</div>
</form>
还有我提交的 JS...
$('form#applicationForm').validate({
onkeyup: false,
onfocusout: false,
onclick: false,
submitHandler: function(form) {
form.submit();
}
});
最后,在我的网络选项卡中通过网络发送的内容 headers(在本例中我只放入 2 个文件):
------WebKitFormBoundaryT5oEIdNCfF7vnxWr
Content-Disposition: form-data; name="file_attachments_1"; filename="lemonone-715d1576013f3260da2afa15a3ce26f03bacac72.zip"
Content-Type: application/zip
------WebKitFormBoundaryT5oEIdNCfF7vnxWr
Content-Disposition: form-data; name="file_attachments_2"; filename="browser marklet.psd"
Content-Type: image/vnd.adobe.photoshop
------WebKitFormBoundaryT5oEIdNCfF7vnxWr
Content-Disposition: form-data; name="file_attachments_3"; filename=""
Content-Type: application/octet-stream
------WebKitFormBoundaryT5oEIdNCfF7vnxWr
Content-Disposition: form-data; name="file_attachments_4"; filename=""
Content-Type: application/octet-stream
------WebKitFormBoundaryT5oEIdNCfF7vnxWr
Content-Disposition: form-data; name="file_attachments_5"; filename=""
Content-Type: application/octet-stream
------WebKitFormBoundaryT5oEIdNCfF7vnxWr--
但是在我的服务器上,这是我得到的...
这是由这段代码生成的...
echo "$_FILES array:<br />";
var_dump($_FILES);
所以我有 enctype="multipart/form-data"
,我有我的 method="POST"
,我所有的文件输入都有名称,网络选项卡中的 HTTP POST
表示请求包含要上传的文件 -- 但 仍然 ,server-side 上的 $_FILES
数组为空?
怎么回事?
您可以在此处找到使用 PHP 上传文件的清单:
也许您在 php.ini
中遗漏了某些内容,数据已发送但 PHP 忽略了它。特别是您应该首先检查以下设置:file_uploads = On
、post_max_size
和 upload_max_file_size
。这些设置也可以在 .htaccess
文件中更改:记得也检查它们。
打开您的 php.ini 文件并查找 file_uploads
确保它已打开,
file_uploads = On
我有以下表格...
<form class="clearfix" action="/application_submit.php" method="post" enctype="multipart/form-data" name="applicationForm" id="applicationForm">
<!-- 100 text/select/option inputs or so that I won't include here... -->
<div class="line">
<div class="unit size1of1">
<label class="field_label" for="freeform_application_attachments">Attachments</label>
<input type="file" name="file_attachments_1" value="" id="freeform_application_attachments0" /><br/>
<input type="file" name="file_attachments_2" value="" id="freeform_application_attachments1" /><br/>
<input type="file" name="file_attachments_3" value="" id="freeform_application_attachments2" /><br/>
<input type="file" name="file_attachments_4" value="" id="freeform_application_attachments3" /><br/>
<input type="file" name="file_attachments_5" value="" id="freeform_application_attachments4" />
</div>
</div>
</form>
还有我提交的 JS...
$('form#applicationForm').validate({
onkeyup: false,
onfocusout: false,
onclick: false,
submitHandler: function(form) {
form.submit();
}
});
最后,在我的网络选项卡中通过网络发送的内容 headers(在本例中我只放入 2 个文件):
------WebKitFormBoundaryT5oEIdNCfF7vnxWr
Content-Disposition: form-data; name="file_attachments_1"; filename="lemonone-715d1576013f3260da2afa15a3ce26f03bacac72.zip"
Content-Type: application/zip
------WebKitFormBoundaryT5oEIdNCfF7vnxWr
Content-Disposition: form-data; name="file_attachments_2"; filename="browser marklet.psd"
Content-Type: image/vnd.adobe.photoshop
------WebKitFormBoundaryT5oEIdNCfF7vnxWr
Content-Disposition: form-data; name="file_attachments_3"; filename=""
Content-Type: application/octet-stream
------WebKitFormBoundaryT5oEIdNCfF7vnxWr
Content-Disposition: form-data; name="file_attachments_4"; filename=""
Content-Type: application/octet-stream
------WebKitFormBoundaryT5oEIdNCfF7vnxWr
Content-Disposition: form-data; name="file_attachments_5"; filename=""
Content-Type: application/octet-stream
------WebKitFormBoundaryT5oEIdNCfF7vnxWr--
但是在我的服务器上,这是我得到的...
这是由这段代码生成的...
echo "$_FILES array:<br />";
var_dump($_FILES);
所以我有 enctype="multipart/form-data"
,我有我的 method="POST"
,我所有的文件输入都有名称,网络选项卡中的 HTTP POST
表示请求包含要上传的文件 -- 但 仍然 ,server-side 上的 $_FILES
数组为空?
怎么回事?
您可以在此处找到使用 PHP 上传文件的清单:
也许您在 php.ini
中遗漏了某些内容,数据已发送但 PHP 忽略了它。特别是您应该首先检查以下设置:file_uploads = On
、post_max_size
和 upload_max_file_size
。这些设置也可以在 .htaccess
文件中更改:记得也检查它们。
打开您的 php.ini 文件并查找 file_uploads
确保它已打开,
file_uploads = On