我想从我的后台下载受保护的文件 - 我必须发送授权标头,所以我无法直接链接它。我创建了以下Ajax请求来下载它:
$(function() {
$.ajax({
url: "http://linktoapi&callback=myMethod",
timeout: 2000,
jsonpCallback: "myMethod",
jsonp: false,
dataType: "jsonp",
success: function(data) {
var newContent = '';
for (var i = 0; i < data.listing.length; i++) {
newContent += '<p class="property-details">' + '<a href="' + data.listing[i].listing_id + '">' + data.listing[i].displayable_address + '</a></p>';
}
$('#content').html(newContent).hide().fadeIn(400);
},
error: function() {
$content.html('<div class="container">Please try again soon.</div>');
}
});
$('.property-details a').on('click', function(e) {
e.preventDefault();
$('#content').html("test").hide().fadeIn(400);
});
});
处理文本文件时一切正常。然而,当我尝试下载二进制文件(图像)时,我得到完全不存在(即使通过控制台打印的响应中的二进制字符串对我来说似乎很好)。所以我认为blob构造存在问题。
我曾尝试使用Int8Array,但它没有帮助。我做错了什么?
答案 0 :(得分:0)
今天我有同样的问题 这是一个角度代码,但也许有些东西可以帮助你
return $http({
url: host + "api/map/rectangleMap",
method: 'POST',
data: angular.toJson(coords),
responseType: 'blob',
transformResponse: function(data){
return new Blob([data], {type: 'image/png'});
}
});
答案 1 :(得分:0)
在guest271314的答案中有一个正确的答案 - link to solution.这是我能找到的唯一可行的解决方案。