gpt4 book ai didi

javascript - 如何使用 angular post 从 Internet Explorer 中的 webapi 下载文件?

转载 作者:行者123 更新时间:2023-11-30 00:07:26 25 4
gpt4 key购买 nike

我正在使用 angularjs http post 在单击按钮时从 Web Api 下载文件。我的代码在 Google Chrome 和 Firefox 中运行良好,但在 Internet Explorer 中不起作用。这是我的代码

$scope.CallApi = function () {
$http({
url: some url,
dataType: 'json',
method: 'POST',
data: null,
responseType: 'arraybuffer',

}).success(function (responsedata, status, xhr) {
var file = xhr('Content-Disposition');
console.log(file);
var filename = file.substr(21, 7);
$scope.value = responsedata;
var fileName = filename;
var blob = new Blob([responsedata], { type: "application/octet-stream" });
var url = URL.createObjectURL(blob);
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
a.href = url;
a.download = fileName;

}).error(function (error) {
alert("Error Found" + " : " + error);
});
};

以上代码在 IE 中不工作,我不想使用 FileSaver.js 扩展名有没有其他方法可以在 Internet Explorer 中从 api 下载文件。下面我附上了我在 Internet Explorer 中遇到的错误的屏幕截图.... enter image description here提前谢谢你......

最佳答案

这是一种在 IE 中下载的方法

  if (window.navigator.msSaveOrOpenBlob){
// base64 string
var base64str = response;
// decode base64 string, remove space for IE compatibility
var newstr =base64str.replace(/\s/g, '');
var binary = atob(newstr);
// get binary length
var len = binary.length;
// create ArrayBuffer with binary length
var buffer = new ArrayBuffer(len);
// create 8-bit Array
var view = new Uint8Array(buffer);

// save unicode of binary data into 8-bit Array
for (var i = 0; i < len; i++) {
view[i] = binary.charCodeAt(i);
}

// create the blob object with content-type "application/csv"
var blob = new Blob( [view], { type: mimeType });
window.navigator.msSaveOrOpenBlob(blob, "Name your file here");
}

此处 mimeType 对您来说是 application/octet-stream,response 是您的 base64 字符串。

关于javascript - 如何使用 angular post 从 Internet Explorer 中的 webapi 下载文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37965807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com