2017-07-18 50 views
0

我工作的是一個表單組中的目錄選擇器,它正確提交,並且所有100個以上的文件都使其成爲POST方法。問題是,'項目文件夾'中的文件必須保留在4個文件夾中。提交項目文件夾將所有4個文件夾中的文件放入一個文件對象數組中。下面的代碼是我擁有的。維護內部文件夾的HTML目錄選擇器

<div class="form-group"> 
    <label class="col-md-4 control-label" for="project_folder">Project Folder</label> 
    <div class="col-md-4"> 
    <input id="project_folder" name="project_folder[]" type="file" webkitdirectory='' mozdirectory='' directory='' multiple='' 
      class="form-control input-md" value="<?=Input::old('project_folder')?>"> 
    </div> 
</div> 

重申:我需要修改這個工作目錄選擇器來提交表單與4個內部文件夾維護。我還有一個帶有4個輸入的版本,您可以分別選擇所有4個文件夾,它們將文件上傳到4個單獨的陣列中(這是我需要的),但是我需要將它歸結爲一個目錄選擇,因爲人爲錯誤已經出現的問題。即將所選目錄分成4個內部目錄。任何建議表示讚賞;謝謝!

回答

0

自己弄明白了,用JavaScript做了這一切。

for(var x = 0; x < files.length; x++) { 
    var file = files[x]; 
    var relativePath = file.webkitRelativePath; 
    if(relativePath.includes('/xFolder/')) { 
     formData.append('x_folder[]', file, file.name); 
    } else if(relativePath.includes('/yFolder/')) { 
     formData.append('y_folder[]', file, file.name); 
    } else if(relativePath.includes('/zFolder/')) { 
     formData.append('z_folder[]', file, file.name); 
    } else if(relativePath.includes('/sourceFolder/')) { 
     var re = /(?:\.([^.]+))?$/; 
     var ext = re.exec(file.name); 
     if(!foundSource && ext[0] === ".xlsx") { 
      foundSource = true; 
      formData.append('source_file', file, file.name); 
     } 
    } 
} 

不得不使用表單提交,因爲它忽略子文件夾,只是轉儲所有文件;使用FormData允許我根據需要對文件進行分組。我從JS文件中將上傳過程更改爲AJAX。 (文件夾名稱因隱私原因而被一般化)

相關問題