Javascript Chrome/WebKit XHR文件上传

Javascript Chrome/WebKit XHR文件上传,javascript,xmlhttprequest,Javascript,Xmlhttprequest,我一直在寻找,但就是找不出这个。为什么XHR连接在Firefox中运行得很好,但在Chrome中却会中断?顺便说一下,我和AngularJS一起使用这个 $scope.upload=函数(项目、文件){ var formData=new formData();//不太清楚为什么我们必须使用formData()。哦,是的,浏览器很糟糕。 formData.append(“”,file.file);//实际文件对象存储在此文件容器中 file.xhr=新的XMLHttpRequest(); file

我一直在寻找,但就是找不出这个。为什么XHR连接在Firefox中运行得很好,但在Chrome中却会中断?顺便说一下,我和AngularJS一起使用这个

$scope.upload=函数(项目、文件){
var formData=new formData();//不太清楚为什么我们必须使用formData()。哦,是的,浏览器很糟糕。
formData.append(“”,file.file);//实际文件对象存储在此文件容器中
file.xhr=新的XMLHttpRequest();
file.xhr.open('PUT','/api/projects/'+project.\u id+'/files',true);
//进度事件侦听器
file.xhr.upload.onprogress=函数(事件){
if(事件长度可计算){
file.uploadPercent=Math.round(event.loaded/event.total*100);
}
};
//上载完整的侦听器
file.xhr.upload.onload=函数(事件){
file.upload=true;
};
//每次状态改变时
file.xhr.onreadystatechange=函数(事件){
if(event.target.readyState==4){
//文件已添加,因此将ID标记到文件对象上
日志(event.target.responseText);
文件。\u id=JSON.parse(event.target.responseText)。\u id;
}否则{
返回;
}
};
文件.xhr.send(formData);
};
在Firefox中,文件被很好地发送到我的服务器,而
responseText
返回的结果与我预期的完全一样。然而,在Chrome中,我得到了这个错误:
error:INVALID\u STATE\u ERR:DOM Exception 11

错误:试图使用不可用或不再可用的对象。
,如果它准确地告诉我试图使用的对象,这将更有帮助。我已经读过,我应该尝试将
async
设置为false并使用
onreadystatechange
,但我不确定这有什么帮助,因为我已经在使用2009年的
onreadystatechange

Bug:XMLHttpRequest在提交表单时不起作用-

您读过吗(ಠ_ಠ) 我在我的问题中引用了这篇文章,特别是Dave Lampert的回答。当我在
xhr.open()
调用中将
async
设置为false时,错误消失了,但Chrome仍然没有将文件发送到服务器。如果你创建了一个文件,我很乐意看一看。这里是的简化版本。也许这有帮助:)