维护内部文件夹的HTML目录选择器

时间:2017-07-18 19:20:59

标签: javascript php html

我工作的是表单组中的目录选择器,它正确提交,并且所有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个内部目录。任何建议表示赞赏;谢谢!

1 个答案:

答案 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。 (出于隐私原因而推广的文件夹名称)