javascript - 在多个文件 uploader 中单击新文件浏览后如何保留旧文件?

标签 javascript jquery html filereader multiple-file-upload

我已经使用 html5+ 文件阅读器上传了带有文件预览的文件,它工作正常,除了用户选择的旧文件从输入文件字段中被破坏,如果用户在新的单一浏览点击中选择。

这是 js fiddle https://jsfiddle.net/sco3pq3b/

html

<p> UPLOAD  </p>
<input type="file" multiple="yes" name="photo[]" id="photos">
<div id="preview"></div>

js

$("#photos").change(function(){

    var fileList = this.files;
    var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.jpg|.jpeg|.gif|.png|.bmp)$/;

    for(var i = 0; i < fileList.length; i++){
        if (regex.test(fileList[0].name.toLowerCase())) {
            var reader = new FileReader();

            reader.onload = function (e) {
                $('#preview').append('<div class="imgLinkWrap"><a class="fancybox" href="' + e.target.result +'">'+fileList[0].name.toLowerCase()+'</a></div>');
            }
            console.log(fileList[i]);
            reader.readAsDataURL(fileList[i]);

        } else {
            alert(file[0].name + " is not a valid image file.");
            $('#preview').html("");
            return false;
        }
    }
});

在不使用任何插件或 ajax 的情况下,是否可以在单击新浏览文件后保留旧文件?

最佳答案

您可以将上传的文件存储在将被保留的本地文件数组中。这就是我修改你的 js 的方式,这似乎工作正常。

var fileList=[];
$("#photos").change(function(){
    fileList.push.apply(fileList,this.files); // appends files objects to local array
    var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.jpg|.jpeg|.gif|.png|.bmp)$/;

   for(var i = 0; i < fileList.length; i++){
       if (regex.test(fileList[0].name.toLowerCase())) {
           var reader = new FileReader();

           reader.onload = function (e) {
               $('#preview').append('<div class="imgLinkWrap"><a class="fancybox" href="' + e.target.result +'">'+fileList[0].name.toLowerCase()+'</a></div>');
           }
           console.log(fileList[i]);
           reader.readAsDataURL(fileList[i]);

       } else {
           alert(file[0].name + " is not a valid image file.");
           $('#preview').html("");
           return false;
       }
   }
});

关于javascript - 在多个文件 uploader 中单击新文件浏览后如何保留旧文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34545290/

相关文章:

javascript - iPad 需要三点触控来处理 JavaScript 点击事件

javascript - 如何在 Javascript 函数中使用选项对象

html - 如何为这个图像网格添加标题?

html - 两个 float div 的 css 分隔符

javascript - 给定一个任意的 javascript 对象,我如何找到它的方法?

javascript - 第一个和最后一个元素之间的连续循环

javascript - 图片库中的图片定位

javascript - Bootstrap Modal block 选择元素

jquery - 使用 jQuery 加载内容的积极因素是否超过 seo 消极因素?

javascript - 使用 jQuery .promise() 调用 clearInterval()