2016-07-13 17 views
0

Ist es möglich, eine FileList Instanz aufteilen (von einem Drop-Ereignisse, event.dataTransfer.fileList) und assing jede Datei innerhalb es zu einem einzelnen<input type="file" ... /> Elemente?Split Dateiliste in einzelne Datei Eingabeelemente

zum Beispiel alle Dateien zuzuweisen (1 oder mehr ...) von einem Drop-Ereignisse zu einem Eingangselement fileInputElement, würden Sie:

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

Ich bin auf der Suche nach so etwas wie:

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)]); 
    } 
} 

Ein Zeichen auf Nö, kann es nicht ...

Antwort

0

Wenn fileEls ein Array bereits, versuchen

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

Sie könnten auch tun:

fileEls [i] .files = Klon (event.dataTransfer.files.item);

Es gibt eine Reihe von Klon (vorzugsweise Deepclone) Funktion um das Web herum.

+0

'fileEls' ist ein Array von' input' Elementen. 'event.dataTransfer.files.item (i)' ergibt einen 'File' Typ. 'fileEls [i] .files' ist eine' FileList', daher ist es nicht sinnvoll diese Datei durch eine 'Datei' zu ersetzen (aus 'event.dataTransfer.files.item (i)') – jlb