我有一个帖子请求,上传文件以及其他一些基本信息。它在Chrome浏览器中运行良好但在IE中不一致。有时上传文件(文件+一些额外的信息),但大多数情况下它在IE中失败。我在Fiddler中跟踪了帖子请求,textview选项卡对于该请求是空的。请求未完成。错误代码是408.我还得到了来自fiddler的弹出消息:“内容长度不匹配:期望内容为3213,但客户端发送0”。因此,请求本身并不完整。
下面给出的是fomrdata和post request的形成代码
var formData = new FormData();
formData.append("file", file);
formData.append("info1", info1);
formData.append("info2", info2);
formData.append("info3", info3);
formData.append("info4", info4);
var defer = $q.defer();
return $http.post(url, formData,
{
headers: { 'Content-Type': undefined },
transformRequest: angular.identity
});
请建议我解决这个问题。另一种解决方案也可以。
答案 0 :(得分:0)
我在angular和FormData方面遇到了类似的问题。在我的情况下,在Chrome中,一切正常 - 在我的Windows 10计算机上的IE 11.20.10586中,也没问题 - 但是使用IE 11.0.9600.18059(Windows 7)和IE 11.0.9600.17728(Windows Server),无法发送IE挂起。
阅读this issue,它似乎是一个IE错误。我无法修复它,但找到了一个有效的解决方法:两次发布表单,第一次没有任何文件。尝试类似的东西:
var formData = new FormData();
$http.post(url, formData,
{
headers: { 'Content-Type': undefined },
transformRequest: angular.identity
}).success(function(){
formData.append("file", file);
formData.append("info1", info1);
formData.append("info2", info2);
formData.append("info3", info3);
formData.append("info4", info4);
$http.post(url, formData,
{
headers: { 'Content-Type': undefined },
transformRequest: angular.identity
});
});