PHP/Javascript/AJAX文件通过拖放上传。文件被转换为字符串
使用放置区上载文件时出现问题。当文件到达后端时,似乎会转换为字符串。我将文件对象添加到一个新数组中,因为我希望用户能够在提交表单之前删除不需要的文件 表单如下所示:PHP/Javascript/AJAX文件通过拖放上传。文件被转换为字符串,javascript,php,html,ajax,Javascript,Php,Html,Ajax,使用放置区上载文件时出现问题。当文件到达后端时,似乎会转换为字符串。我将文件对象添加到一个新数组中,因为我希望用户能够在提交表单之前删除不需要的文件 表单如下所示: <form action="" class="dropzone" id="image_upload" enctype="multipart/form-data"> <div class="upload-input"> <label for="delivery_address"
<form action="" class="dropzone" id="image_upload" enctype="multipart/form-data">
<div class="upload-input">
<label for="delivery_address" id="delivery_address_label">Delivery address</label>
<input type="text" name="delivery_address" id="delivery_address" class="form-control" />
</div>
<div class="" id="drop-area">
<p>Upload multiple files with the file dialog or by dragging and dropping images onto the dashed
region
</p>
</div>
<div class="upload-input">
<input class="btn btn-info w-100" type="submit" id="btnUpload" value="Send" />
</div>
</form>
在PHP文件中,我只是暂时转储$\u文件,看看发生了什么:
var_dump($_FILES);
返回
数组(0){}
var_dump($_POST)返回:
数组(3){[“传递类型”]=>string(14)“Latvijas过去”[“传递地址”]=>string(6)“qweeqe”[“文件列表”]=>string(27)“[对象文件],[对象文件]”}
我找不到问题出在哪里。表单设置为enctype=“多部分/表单数据”。在发送form I console.log之前,先输入fileList变量,看起来文件仍然是文件:
正如建议的那样,我必须遍历文件列表数组中
文件的每个实例,并将每个文件
分别附加到FormData中
本部分:
formData.append("fileList", fileList);;
变成:
for (let i = 0; i < fileList.length; i++) {
formData.append("fileList[]", fileList[i]);
}
for(设i=0;i
在后端,我可以循环浏览每个文件:
foreach($_FILES['fileList']['tmp_name'] as $key => $tmp_name){
echo $_FILES['fileList']['name'][$key] . "<br />";
}
foreach($\u文件['fileList']['tmp\u名称']as$key=>$tmp\u名称){
echo$_文件['fileList']['name'][$key]。“
”;
}
:“[value]可以是USVString或Blob(包括File之类的子类)。如果没有指定任何一个,则该值将转换为字符串。”-您的文件列表
只是一个数组,因此会发生字符串转换,实际的文件实例将转换为[object File]
。您需要在文件列表上循环,并将其中的各个文件
实例逐个附加到FormData实例中。
foreach($_FILES['fileList']['tmp_name'] as $key => $tmp_name){
echo $_FILES['fileList']['name'][$key] . "<br />";
}