【问题标题】:File field - Append file list文件字段 - 附加文件列表
【发布时间】:2013-05-20 12:38:03
【问题描述】:

我给我做了一个简单的文件字段:

<input type="file" name="pictures_array[]" multiple accept="image/*" id="page_pictures_array" />

还有一些 HTML5 File API 代码来列出文件:

$('.page-form #page_pictures_array').change(function(evt) {
      var file, files, reader, _i, _len;
      files = evt.target.files;
      console.log(files);
      $('#file-list').empty();
      for (_i = 0, _len = files.length; _i < _len; _i++) {
        file = files[_i];
        reader = new window.FileReader;
        reader.onload = (function(file) {
          return function(e) {
            var src;
            src = e.target.result;
            return $("<li>" + file.name + " - " + file.size + " bytes</li>").prepend($('<img/>', {
              src: src,
              "class": 'thumb'
            })).appendTo($('#file-list'));
          };
        })(file);
        reader.readAsDataURL(file);
      }
    });

(参见here)

但是,由于我认为我的用户确实很愚蠢,我相信他们会选择一个文件,然后再次单击上传字段以选择下一个。但是,&lt;input type="file"&gt; 的列表每次都会使用新选择的图像进行重置。

如何确保将新文件附加到 &lt;input&gt; 的数组中,以免被愤怒的用户 cmets 淹没?

【问题讨论】:

    标签: html forms file-upload fileapi


    【解决方案1】:

    我也在寻找这个问题的答案,我认为其他人已经这样做了。 但是,如果您查看文件列表 W3 参考 http://www.w3.org/TR/FileAPI/#dfn-filelist,它会说它是只读的....

    编辑:现在这是一个很大的代码,经过一些改进,使得复制/粘贴变得困难。但我开始创建一个变量来保存所有 tmp 文件。

    var tmp_files = new Array();
    

    然后当我添加一个新文件时,我会像这样将文件推送到该数组中

    tmp_files.push(file);
    

    在所有插入/删除之后(我有另一个 var 来保存删除),当用户单击发送文件时,我有这段代码可以使 formdata 包含我想要的文件

    var data = new FormData(); var count = 0;
    $.each(tmp_files, function(i, file){
        if(del_files.indexOf(file.name)== -1){
            data.append(count, file);
            count++;
        }
    });
    

    然后我只是通过 ajax 发送 var 数据并保存它们。 你可以使用 $data = $_FILES;

    希望对你有所帮助。

    【讨论】:

    • 不使用ajax怎么办?例如,如果我只想在不使用 AJAX 的情况下将其附加到表单发布事件?
    • @SolomonClosson 无法将文件附加到
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    • 2015-04-05
    相关资源
    最近更新 更多