Javascript文件上传在Chrome中不起作用

我已经实现了以下JS代码来上传文件。 在IE中,它工作正常,但在Chrome中,我在服务器端获得一个空文件。 我使用Fiddler查看了请求数据,发现该请求不包含Chrome中的文件数据(在IE中它)。 它看起来像这样:

----WebkitFormBoundary4kjth5kjt54h
Content-Disposition: form-data; name="C:fakepathfile.txt"; filename=""
Content-Type: application/octet-stream


----WebkitFormBoundary4kjth5kjt54h--

在IE中它看起来像:

----------------7dd435hb8d7gs34
Content-Disposition: form-data; name="C:fakepathfile.txt"; filename="file.txt"
Content-Type: text/plain

The file data bla bla bla
----------------7dd435hb8d7gs34--

所以客户端一定有问题,但我无法弄清楚它是什么。

这个代码在用户点击一个按钮时被激活。

请不要建议创建一个常规的HTML <form>标签,因为我的情况不能实现。 它必须使用JavaScript来完成。

var form = document.createElement("FORM");
form.method = "post";
form.style.display = "none";
// adding some input elements to the form...
// ...
// adding the file input
form.enctype = "multipart/form-data";
var fileInputs = jQuery("input:file");
fileInputs.each(function() {
     if (this.value != "") {
           form.appendChild(this);
     }
});
form.action = "my.servlet.path";
form.submit();

编辑:新的信息:我注意到在网络选项卡中的铬devtools请求状态是“取消”。 那是什么意思? 请求确实到达服务器,所以取消了什么? 为什么?


解决了

好的,我发现了这个错误。 我在这里发布的代码是实际发生的模拟版本。 实际发生的情况是,在form.submit()和KnockOut获取该更新之前,在页面上更新了一些全局数据,并用空值更新了<input type="file"> 。 然后显然这个文件没有被发送到服务器。

更改后,它可以正常工作,但请求在“网络”选项卡中仍显示为已取消。 不知道为什么...

链接地址: http://www.djcxy.com/p/36429.html

上一篇: Javascript file upload not working in Chrome

下一篇: What does status=canceled for a resource mean in Chrome Developer Tools?