如何在AngularJS中进行POST请求以获取blob

6
我有以下的ajax代码,它向服务器发送了一个POST请求并返回数据。
function upload(blob){

  var formData = new FormData();
  formData.append('file', blob);

  $.ajax({
    url: "http://custom-url/record.php",
    type: 'POST',
    data: formData,
    contentType: false,
    processData: false,
    success: function(data) {
          console.log(data);
    }
  });

}

我应该如何在AngularJS中完成同样的事情?
1个回答

1

与其将blob附加到FormData上,直接将blob作为FormData APIbase64编码发送更为高效,因为该编码方式会增加33%的额外开销。

var config = { headers: { 'Content-Type': undefined } };

$http.post(url, blob, config)
  .then(function (response) {
    var data = response.data;
    var status = response.status;
    var statusText = response.statusText;
    var headers = response.headers;
    var config = response.config;

    console.log("Success", status);
    return response; 
}).catch(function (errorResponse) {
    console.log("Error", errorResponse.status);
    throw errorResponse;
});

重要的是将内容类型标头设置为undefined,以便XHR send method可以设置内容类型标头。否则,AngularJS框架将使用内容类型application/json进行覆盖。
有关更多信息,请参见AngularJS $http Service API Reference

1
我们如何在AngularJS中指定文件名?即在formData.append('file', blob);这一行中,'file'的等效项是什么? - Aniket Suryavanshi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接