evt.target.result 为空?

发布于 2024-11-13 21:59:23 字数 644 浏览 3 评论 0原文

由于某种原因,在以下代码中,evt.target.result 为空。这是为什么?

function drop(evt) {
    evt.stopPropagation();
    evt.preventDefault();

    var file = evt.dataTransfer.files[0];

    handleFiles(file, evt.target);
}

function handleFiles(file, target) {
    loadSongAnimate();

    var reader = new FileReader();

    // init the reader event handlers
    reader.onloadend = handleReaderLoadEnd;

    // begin the read operation
    reader.readAsDataURL(file);
}

function handleReaderLoadEnd(evt) {
    alert('Passing this: ' + evt.target.result);
    document.getElementById('audioTagId').src = evt.target.result;
}

For some reason, in the following code, evt.target.result is empty. Why is that?

function drop(evt) {
    evt.stopPropagation();
    evt.preventDefault();

    var file = evt.dataTransfer.files[0];

    handleFiles(file, evt.target);
}

function handleFiles(file, target) {
    loadSongAnimate();

    var reader = new FileReader();

    // init the reader event handlers
    reader.onloadend = handleReaderLoadEnd;

    // begin the read operation
    reader.readAsDataURL(file);
}

function handleReaderLoadEnd(evt) {
    alert('Passing this: ' + evt.target.result);
    document.getElementById('audioTagId').src = evt.target.result;
}

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

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

发布评论

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

评论(2

一口甜 2024-11-20 21:59:23

来自精细手册

onloadend
读取完成时调用,无论成功与否。这在 onloadonerror 之后调用。

我怀疑您遇到了错误情况。添加 onerror 回调并查看 reader.error 所说的内容。您可能需要使用单独的 onerroronabortonload 回调,而不是 onloadend

中止
当读取操作中止时调用。

错误
发生错误时调用。

加载
读取操作成功完成时调用。

这可能会让处理个别事件变得更容易。


在您的评论中,您说您收到来自 其他精美手册

常量SECURITY_ERR
:2
描述:出于安全原因,无法访问该文件。

所以看起来您收到了“权限被拒绝”错误。

From the fine manual:

onloadend
Called when the read is completed, whether successful or not. This is called after either onload or onerror.

I suspect that you have an error condition. Add an onerror callback and have a look at what reader.error has to say. You might want to use separate onerror, onabort, and onload callbacks instead of onloadend:

onabort
Called when the read operation is aborted.

onerror
Called when an error occurs.

onload
Called when the read operation is successfully completed.

That might make it easier to handle the individual events.


In your comment you say that you're getting an "error 2", from the other fine manual:

Constant: SECURITY_ERR
Value: 2
Description: The file could not be accessed for security reasons.

So it looks like you getting a "permission denied" error.

暖伴 2024-11-20 21:59:23

我正在通过本地 file:// 协议编辑和查看该文件。当您在另一个本地文件中引用本地文件时,引用的本地文件中的空白标头会引发安全错误。

吸取的教训...始终上传到服务器进行测试。本来可以节省我几个小时的谷歌搜索时间和很多头发。

I was editing and viewing the file over a local file:// protocol. When you are referencing a local file inside another local file, the blank headers in the referenced local file with throw security errors.

Lesson learned... always upload to a server for testing as well. Would have saved me hours of Googling, and lots of hair.

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