图像大小 (.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;
});
我正在尝试从 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;
});