1

尝试使用以下代码将文件上传到 servlet:

    var fd = new FormData();
    fd.append("file", document.getElementById('fileToUpload').files[0]);
    var xhr = new XMLHttpRequest();
    xhr.upload.addEventListener("progress", uploadProgress, false);
    xhr.upload.addEventListener("load", transferComplete, false);
    xhr.addEventListener("error", onError, false);
    xhr.addEventListener("abort", onUploadCanceled, false);

    xhr.open("POST", urlManager.getUploadHandlerUrl());
    xhr.send(fd);

问题仅在chrome中(在Firefox中完美运行),说加载资源失败并且问题不一致。它有时会上传一次或两次开始大喊大叫。当这是错误时,它甚至不会调用服务器。

尝试使用此问题中示例中的jquery。但没有任何好处。

我想不出这样的事情怎么会发生。我感谢任何线索,谢谢。

在此处输入图像描述

编辑:当我包装我的 XHR 并按照另一个SO 答案中的说明显式设置异步时,它正在为至少 3-4 次上传工作并开始大喊大叫。(比以前好一点)。我怀疑它是否真的有效果。
当状态发生变化时,我正在记录就绪状态和状态。readyState 只是从 1 跳转到 4,状态为 0。

4

1 回答 1

1

我也有类似的问题,我的问题是通过解决 HTTP 与 HTTPS 冲突解决的。

如果上传文件的页面是从 HTTP 提供的,并且您发出的发布请求是 HTTPS,那么它可能会在 chrome 中出现“资源加载失败”错误,这就是我的情况。

页面服务和发布请求都应该是 HTTP 或两者都应该是 HTTPS ,它可以是两者的组合。

我制作了 HTTP 并且我的问题得到了解决。让我知道这是否也解决了您的问题。祝您好运。

于 2013-01-11T09:56:05.850 回答