如何操作FileList type = file并通过Ajax发送?

时间:2018-04-10 14:05:05

标签: javascript html ajax

我的问题需要一些帮助。我想从FileList中删除一些文件,然后通过Ajax使用新的FormData发送它们。为此,我只想使用Javascript。

用户选择文件后,content_evaluate()函数会对它们进行评估,并将要发送的文件分配给新的数组transfer_files []。这些文件将添加到新的formdata中,然后发送。 但是,即使仅将修改后的数组赋予新的formdata,也会发送源输入中的所有文件。例如必须发送5个文件中的3个。

<form id="formular" onsubmit="send_data();" method="post" 
enctype="multipart/form-data">
<table id="dyninfo" align="center" border="1">
<tr>
    <td>
        <input id="upload_filename_id" name="upload_filename" type="file" 
        onchange="content_evaluate();" size="60" multiple>
    </td>
    <td>
        <button type="submit" id="upload" style="width:120px">Upload</button>
    </td>
</tr>
</table>
</form>

脚本:

 var transfer_files = [];
 function send_data()
 {
 var formData = new FormData();
 for (var i = 0; i < transfer_files.length; i++) 
 {
    var file = transfer_files[i];
    formData.set(transfer_files, file, file.name);
 }
 var xhr = new XMLHttpRequest();
 xhr.open('POST', 'upload.html', true);
 xhr.send(formData);

 return false;
 };

1 个答案:

答案 0 :(得分:0)

您正在循环遍历0长度数组(transfer_files)

你应该做些什么:

使用输入文件对象检索输入的文件,然后循环浏览

StatusCode: 404, ReasonPhrase: 'Not Found', Version: 1.1, Content: 

System.Net.Http.NoWriteNoSeekStreamContent, Headers:
{
  Cache-Control: no-store, must-revalidate, no-cache
  Date: Wed, 11 Apr 2018 05:19:41 GMT
  Server: Jetty(9.4.z-SNAPSHOT)
  X-Content-Type-Options: nosniff
  Content-Length: 429
  Content-Type: text/html; charset=iso-8859-1
}