【问题标题】:How to make a POST request for a blob in AngularJS如何在 AngularJS 中对 blob 发出 POST 请求
【发布时间】:2017-03-04 14:25:54
【问题描述】:

我有以下 ajax 代码向服务器发出对 blob 的 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 中做同样的事情?

【问题讨论】:

    标签: angularjs ajax post http-post blob


    【解决方案1】:

    与将blob 附加到FormData 相比,直接发送blob 效率更高,因为FormData APIbase64 encoding 有额外的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

    【讨论】:

    • AngularJS中如何指定文件名?即'file'formData.append('file', blob); 行中的等价物是什么?
    猜你喜欢
    • 2019-10-15
    • 2016-01-06
    • 2018-03-15
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 2014-07-07
    相关资源
    最近更新 更多