gpt4 book ai didi

javascript - 处理ajax成功的PDF结果数据

转载 作者:行者123 更新时间:2023-12-02 19:51:10 25 4
gpt4 key购买 nike

我想知道是否有人可以提出以下解决方法的替代方法。

我有一个 Web 应用程序,可以发出 PDF 的 http 请求。 PDF 可能需要超过服务器端创建请求的默认超时时间,因此为了更好地控制这一点,我使用了 ajax,而之前只使用了 window.open。

但是,由于 PDF 的准备方式,创建它的请求也会返回它。我无法找到处理返回的二进制 PDF 数据的方法,因此我只是依靠浏览器缓存来存储数据。然后只需再次请求相同的 url,但使用 window.open。

其代码如下..

function loadPdf(url, timeout){
$.ajax({
url: url,
success: function(data){
window.open(url);
},
error: function(error, status){
window.alert("Problem retrieving PDF.\nThe error status is: " + status);
},
timeout: timeout,
dataType: "application/pdf"
});
}

我真正想做的是以要求用户打开/保存 PDF 的方式处理成功数据。我真的不喜欢以这种方式使用 window.open,尤其是像这样的重复调用。

最佳答案

Really what I would like to do is handle the success data in a way that asks the user to open/save the PDF

这是不可能的。您不应该使用 AJAX 来下载文件。您无法对在 success 回调中检索到的字节数组执行任何有用的操作。您不能直接将其保存在客户端计算机上(出于显而易见的原因),也不能通过“保存”对话框提示用户。

您也不需要使用window.open。您只需提供该文件的链接即可:

<a href="/somescript">download pdf</a>

然后在服务器上指定:Content-Disposition:附件; filename="test.pdf" 自定义 HTTP header ,用于显示保存对话框,允许用户指定计算机上存储文件的位置。

关于javascript - 处理ajax成功的PDF结果数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9291870/

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