图像大小 (.bin) 在通过 AJAX 调用生成时加倍

Image size (.bin) getting doubled while generating it via AJAX call

我正在尝试从 REST API 中生成 .bin 文件,用 Swing 编写,AngularJS.Following 是代码。

var options = {
  url: 'http://example.com/imageAPI',
  method: 'POST',
  headers: {
    'Authentication': headerAndPostParams[0],
    'Content-Type': 'application/json',
    'Accept': 'application/octet-stream'
  },
  responseType: 'arraybuffer',
  data: {
    uniqueId: headerAndPostParams[1],
    imageName: headerAndPostParams[2],
    clientMacAddress: headerAndPostParams[3]
  }
};
return $http(options).then(function(sucessResponse) {
  if (sucessResponse.data != "" && sucessResponse.data.responseCode === undefined) {
    download(sucessResponse.data, "image.bin", "application/octet-stream");
    return true;
  }
  return false;
});

以下是回复 headers
Access-Control-Allow-Origin: http://localhost:8080
Content-Disposition:附件;文件名=cns3xxx_md_2.6.9_ac_aa_33_dd_aa_35.bin
Content-Length :7864320
Content-Type :application/octet-stream
日期:2017 年 4 月 18 日星期二 06:38:35 GMT
变化:来源
access-control-allow-credentials: 真
上面的代码有效 fine.But 问题是从 API 发送的图像大小为 7.5 MB,而从我的 UI 端生成的图像大小为 13.5 MB。在将其提供给 donwload 函数之前,我们是否必须执行任何解码。
(注意:下载是 donwload.js 库中的函数。)

找到解决方案。实际上 $http 服务默认更改对文本的响应。这使图像的大小增加了一倍。为了避免它,我们需要添加以下参数。

响应类型:"blob"

$http({
  url: 'http://example.com',
  method: 'POST',
  responseType: "blob",
  headers: {
    'Authentication': headerAndPostParams[0],
    'Content-Type': 'application/json',
    'Accept': 'application/octet-stream'
  },
  data: {
    uniqueId: headerAndPostParams[1],
    imageName: headerAndPostParams[2],
    clientMacAddress: headerAndPostParams[3]
  }
}).then(function(sucessResponse) {
  if (sucessResponse.data != "" && sucessResponse.data.responseCode === undefined) {
    var blob = new Blob([sucessResponse.data], {
      type: "application/octet-stream"
    });
    download(blob, headerAndPostParams[2]);
    return true;
  }
  return false;
}, function(response) {
  return false;
});