有关FileReader.readAsDataURL(),为什么不能连续选择同一个文件?

发布于 2022-09-05 15:30:18 字数 1388 浏览 44 评论 0

<!doctype html>
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Image preview example</title>
</head>
<body onload="loadImageFile();">
<input id="browse" type="file" onchange="previewFiles()" multiple>
<div id="preview"></div>
</body>
  <script>
  function previewFiles() {

  var preview = document.querySelector('#preview');
  var files   = document.querySelector('input[type=file]').files;

  function readAndPreview(file) {

    // Make sure `file.name` matches our extensions criteria
    if ( /\.(jpe?g|png|gif)$/i.test(file.name) ) {
      var reader = new FileReader();

      reader.addEventListener("load", function () {
        var image = new Image();
        image.height = 100;
        image.title = file.name;
        image.src = this.result;
        preview.appendChild( image );
      }, false);

      reader.readAsDataURL(file);
    }

  }

  if (files) {
    [].forEach.call(files, readAndPreview);
  }

}
  </script>
</html>

clipboard.png

这是在MDN上面FileReader.readAsDataURL()的例子,我想做一个图片上传然后可以页面预览,但是发现用这个方法无法实现连续选择同一张图片,因为我做的页面自己加上了删除功能,这样删除后想要重新选择这张图片也是不可以的,问题到底出在哪里,求解惑?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

塔塔猫 2022-09-12 15:30:18

问题应该是出在onchange上, 两次选择同一个文件onchange应该没有进行响应

节枝 2022-09-12 15:30:18
if (files) {
    [].forEach.call(files, readAndPreview);
    document.getElementById('browse').value = '';
}

图片预览完,清空input,可保证onchange事件一直能响应。

心舞飞扬 2022-09-12 15:30:18

input onchange事件有多种解决方法,比如,给input一个其他的属性,不断变化,重新更新tpye为file,额,挺多方法的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文