2016-07-13 71 views
0

是否有可能拆分FileList实例(从放置事件,event.dataTransfer.fileList),并在其中的每个文件assing到个体<input type="file" ... />元件?分割文件清单成单独的文件输入元件

例如,从drop事件中的所有文件(1或更多...)分配到某个输入元素fileInputElement,你会:

function dropHandler(event) { 
    fileInputElement.files = event.dataTransfer.files; 
} 

我在寻找类似:

function dropHandler(event) { 
    // assume fileEls is an array of input[type=file] elements 
    for (var i = 0; i < event.dataTransfer.files.length; i++) { 

    // yep, FileList.push doesn't exist.. 
    fileEls[i].files.push(event.dataTransfer.files.item(i)); 

    // and this (imagined) FileList constructor is not available... 
    fileEls[i].files = new FileList([event.dataTransfer.files.item(i)]); 
    } 
} 

一个标志指向不,不能这样做 ...

回答

0

如果fileEls是一个数组已经尝试

fileEls.push(event.dataTransfer.files.item(i));

你也可以这样做:

fileEls [I] .files =克隆(event.dataTransfer.files.item);

网络上有许多克隆(最好是深度克隆)功能。

+0

'fileEls'是'input'元素的数组。 'event.dataTransfer.files.item(i)'产生一个'File'类型。 'fileEls [i] .files'是一个'FileList',所以用'File'(来自'event.dataTransfer.files.item(i)')替换它是没有意义的。 – jlb