我工作的是表单组中的目录选择器,它正确提交,并且所有100多个文件都使其成为POST方法。问题是,'项目文件夹中的文件'在4个必须维护的文件夹中。提交项目文件夹会将所有4个文件夹中的文件放入一个文件对象数组中。下面的代码就是我所拥有的。
<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 :(得分: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。 (出于隐私原因而推广的文件夹名称)