【问题标题】:get specific file from multiple file input and assign it to other input in javascript从多个文件输入中获取特定文件并将其分配给javascript中的其他输入
【发布时间】:2017-08-13 14:55:09
【问题描述】:

我有多个文件输入的表单

<input type="file" name="images[]" multiple>
<input type="file" name="images[]" multiple>
<input type="file" name="images[]" multiple>
.....

用户可以从一个输入上传多个文件。表单在输入更改时提交(当用户选择文件并单击上传时)。有没有办法从这个输入中获取一个特定的文件并将其分配给另一个?假设用户在第一个输入中选择 3 个文件。我想要做的是“获取”2个文件(所以在第一次输入时只剩下一个文件)并将它们分配给另外2个输入。所以最后,每个输入只有一个文件。我怎样才能做到这一点?我试图从输入 $('#myInput').val() 中获取值,但它只返回最后一个文件。也尝试过var files = document.getElementById("myInput").files,但它没有帮助,我不能“获取”文件并将它们分配给另一个输入

【问题讨论】:

    标签: javascript jquery html forms file-upload


    【解决方案1】:

    可以将现有的FileList 对象(例如从&lt;input type="file"&gt; .filesDataTransfer.files 对象中检索到的)分配给不同的&lt;input type="file"&gt; .files 属性。无法从.files 属性引用的FileList 对象中删除File 对象。

    您可以做的是迭代FileList 并将File 对象分配给FormData 对象或数组。否则 .files 属性是只读的。

    另见input file to array javascript/jquery

    【讨论】:

    • 感谢您的回复。你能更具体一点吗,我该怎么做?我猜var files = document.getElementById("myInput").files; 然后循环通过for (var i = 0; i &lt; files.length; i++) ...
    • @devnull 是的。您可以创建一个FormData 对象或Array 来存储您希望从原始FileList 对象中获取的特定File 对象。将FormData 对象上传到服务器应该不会有问题,其中包括N 个File 对象,这些对象设置为FormData 对象的相应键的值,请参阅stackoverflow.com/questions/38580177/…stackoverflow.com/questions/40206693/…
    • @devnull 请注意,该过程不会从.files 元素的.files 属性中删除原始File
    • 好的,遇到了一些麻烦。我循环通过for (var i = 0, files = event.target.files; i &lt; files.length; i++) { $('.otherInput').val(files[i]); } 类似的东西?
    • 不,不是那样的。答案解释说,除了使用DataTransfer.filesdrop 事件之外,无法在FileList 对象上设置File。使用FormData,如链接问题的答案中所述。 .val() 设置&lt;input&gt; 元素的.value 属性,而不是&lt;input type="file"&gt; 元素的.files 属性。您是否阅读了链接的问题和答案?
    猜你喜欢
    • 2016-02-25
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    相关资源
    最近更新 更多