2016-07-13 3 views
0

Можно ли разделить FileList экземпляр (из события перетаскивания, event.dataTransfer.fileList) и Ассинг каждого файла в нем к индивидуальному<input type="file" ... /> элемента?Split FileList в элементы ввода отдельных файлов

Например, чтобы назначить все файлы (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 [я] .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

Смежные вопросы