gpt4 book ai didi

javascript - 通过 ajax 打开 FileStreamResult(作为下载的文件)

转载 作者:行者123 更新时间:2023-11-30 09:48:56 28 4
gpt4 key购买 nike

是否可以使用 ajax 调用将 FileStreamResult 作为下载文件打开?

Controller 方法

public FileStreamResult DownloadPDF()
{
var stream = myHandler.getFileStream("myfile.pdf");
return File(stream, "application/pdf", "myfile.pdf"));
}

HTML代码

<a href="#" class="mydownload">Click Me</a>
<script type="text/javascript>
$("a.mydownload").click(function () {
$.ajax({
method: 'GET',
url: 'http://myserver/file/DownloadPDF',
success: function (data, status, jqXHR) {
var blob = new Blob([data], { type: "application/pdf" })
var url = window.URL.createObjectURL(blob);
var a = document.createElement("a");
document.body.appendChild(a);
a.href = url;
a.click();

}
});
});
</script>

在 IE 上运行我被拒绝访问,但在 Chrome 上运行正常。然而,我确实得到了一个“空白”/无效的 pdf。

最佳答案

使用 XMLHttpRequest()responseType设置为 "blob" , 添加 download属性为 <a>元素

$("a.mydownload").click(function () {
var request = new XMLHttpRequest();
request.responseType = "blob";
request.open("GET", "http://myserver/file/DownloadPDF");
request.onload = function() {
var url = window.URL.createObjectURL(this.response);
var a = document.createElement("a");
document.body.appendChild(a);
a.href = url;
a.download = this.response.name || "download-" + $.now()
a.click();
}
request.send();
});

或者,您可以使用 jquery-ajax-blob-arraybuffer.js .另见 Add support for HTML5 XHR v2 with responseType set to 'arraybuffer' on $.ajax

关于javascript - 通过 ajax 打开 FileStreamResult(作为下载的文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37462263/

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