如何从单个输入获取多个文件输入

use*_*322 6 javascript file input

使用浏览器 firefox 和 chrome

我有一个输入文件元素。

<input type='file' id='tempFileInput' multiple></input>
Run Code Online (Sandbox Code Playgroud)

假设我为上述文件输入框选择了三个文件 ('tempFileInput');

OnChange 我想为每个文件将三个文件分成三个新的文件输入框。IE

<input type='file' id='inputFile_0'></input> 
<input type='file' id='inputFile_1'></input> 
<input type='file' id='inputFile_2'></input>
Run Code Online (Sandbox Code Playgroud)

我正在努力实现这一目标。有什么帮助吗?

//我已经为我想要实现的目标编写了一个小的 JavaScript 片段。

var index = 0;
function multipleInputBoxes(tempFileInput){
   var divForm = document.getElementById('divForm');
   var numOfFiles = tempFileInput.files.length;

   for(var i=0; i<numOfFiles; i++){
      var newUploader = document.createElement('input');
      newUploader.type='file';
      newUploader.id = 'inputFile_' + index;

      var file = tempFileInput.files[i];
      ***newUploader.files[0] = file;***
      //above line does not work, as by default due to security reasons input type='file' is read only, and non editable.

      divForm.appendChild(newUploader);
      index++;
   }
}
Run Code Online (Sandbox Code Playgroud)

use*_*322 0

因此,我很难以单个文件输入的形式访问文件并将它们单独保存在每个表单中。由于我可以访问每个文件var file = tempFileInput.files[i],因此我创建了一个循环并将每个文件保存在 html“object”标记中,并将文件对象保存在 object.value 中。例如

var numOfFile = tempFileInput.files.length;
for (var int i=0; i<numOfFile; i++){
    //get file object from the filinput element
    var file = tempFileInput.files[i];

    //create new element
    var newObj = document.createElement('object');
        newObj.id = 'obj_' + i;
        newObj.value = file;

    //append object to new form
    createNewForm(newObj);
}

function createNewForm(newObj){
   ...do something here
   ...
   ...
   newForm.appendChild(newObj);
}
Run Code Online (Sandbox Code Playgroud)