Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/Javascript/AJAX文件通过拖放上传。文件被转换为字符串_Javascript_Php_Html_Ajax - Fatal编程技术网

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 />";
}