【问题标题】:[Update]Using FileReader in Chrome[更新]在 Chrome 中使用 FileReader
【发布时间】:2011-07-12 14:05:03
【问题描述】:

我设置了一个 Apache 服务器,将页面放在服务器上,问题就解决了。 所以我知道这个问题是由 chrome 中的安全设置引起的。

现在我想知道,是否可以让本地网页访问本地文件?

我将制作一个允许将本地图像拖到其上的页面。 这是我的代码,在 chrome 中不起作用

问题是没有触发 reader.onload 事件,而是触发了 onerror。

那是什么原因呢?以及如何解决? 非常感谢。

var oImg=document.getElementById("img1");

oImg.addEventListener('dragover', function(e) {
    e.stopPropagation();
    e.preventDefault();
}, false);

oImg.addEventListener('drop', handleDrop, false);

function handleDrop(e) {
    e.stopPropagation();
    e.preventDefault();

    var thisfile  = e.dataTransfer.files[0],
    reader = new FileReader();

    reader.onload = (function(thisfile){
        return function(e){
            oImg.src = e.target.result;
            }
        }
    })(thisfile);

    reader.readAsDataURL(thisfile);
}

【问题讨论】:

  • onerror 事件是否包含任何错误信息?
  • onerror 返回 SECURITY_ERR
  • 这意味着您正在使用 file:/// 协议运行本地文件。 Chrome 故意否认这一点,老实说,我不确定安全隐患是什么。如果您从本地服务器运行它,它应该可以工作。 psema4 使用 --allow-file-access-from-files 的想法很好,但根据我的经验,该标志不起作用:-/
  • Chrome 认为这是一项功能,而不是错误。请参阅 blog.chromium.org/2008/12/…code.google.com/p/chromium/issues/detail?id=47416。两种解决方案:使用 Web 服务器或使用 FF。

标签: javascript html filereader


【解决方案1】:

我不确定此选项是否仍然可用(AFAIK 确实如此)- 尝试使用开关 --allow-file-access-from-files 打开 chrome

存在可能与您的问题相关的开放issue。对此问题加注星标的人越多,得到修复的可能性就越大 - 请参阅评论 #1。

【讨论】:

    【解决方案2】:

    问题似乎是关于 file:// 的安全限制

    这是另一个讨论错误的堆栈溢出问题。

    Uncaught Error: SECURITY_ERR: DOM Exception 18 when I try to set a cookie

    【讨论】:

      猜你喜欢
      • 2020-07-30
      • 1970-01-01
      • 2017-05-02
      • 2011-09-28
      • 1970-01-01
      • 2018-04-11
      • 1970-01-01
      • 1970-01-01
      • 2014-10-22
      相关资源
      最近更新 更多