【发布时间】:2013-09-22 11:55:33
【问题描述】:
我正在尝试从 AngularJS $http POST 请求中获取“进度”事件以进行文件上传。
查看$http upload file progress in AngularJS 之后,我遇到了一个最近的 angular.js git commit,它假设可以解决问题Add XHR progress event handling to $http and $httpBackend。
有没有人完成这项工作?如果是这样,可以举个例子吗?
附言。我宁愿继续使用 $http 而不是创建我自己的 XMLHttpRequest。原因是我的后端希望将 json 对象与多部分文件数据相结合。并且通过 XMLHttpRequest 进行的尝试失败并出现错误消息,即后端看不到请求的 json 对象部分“所需的字符串参数 'objData' 不存在。客户端发送的请求在语法上不正确。”在 POST 消息中,我在 Firebug 中看到“Content-Disposition: form-data; name="objData"”。
$scope.uploadFile = function() {
var url = buildUrl('/upload');
var data = {objData: $scope.data, fileData: $scope.file};
var formData = new FormData();
formData.append("objData", angular.toJson(data.objData));
formData.append("fileData", data.fileData);
var xhr = new window.XMLHttpRequest();
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.open("POST", url);
xhr.setRequestHeader("Content-Type","application/json;charset=utf-8");
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.send(formData);
};
【问题讨论】:
标签: angularjs