尝试使用以下代码将文件上传到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中完美运行),表示无法加载资源且问题不一致。上传一次或两次,有时会开始大喊。当这是错误时,它甚至不会调用服务器。
使用来自this quesion中示例的jquery进行了尝试。但是没有好处。
我不知道这种事情会如何发生。我感谢任何潜在客户,谢谢。
编辑:当我包装XHR并按照另一个SO answer中的说明显式设置异步时,它正在处理至少3-4次上载并开始大喊大叫(比以前好一点)。我怀疑这是否真正有效。
状态更改发生时,我正在记录就绪状态和状态。 readyState将从1跳到4,状态保留为0。
最佳答案
我也有类似的问题,我的问题是通过解决HTTP与HTTPS冲突解决的。
如果上传文件的页面是通过HTTP提供的,而您发出的发布请求是HTTPS,则它可能会在Chrome中显示“资源加载失败”错误,这就是我的情况。
页面服务和发布请求都应为HTTP或两者均应为HTTPS,可以将二者组合。
我都做了HTTP,问题解决了。让我知道这是否也解决了您的问题。祝您好运。