gpt4 book ai didi

javascript - 如何使用js在具有自定义名称的iOS中正确下载pdf文件?

转载 作者:行者123 更新时间:2023-12-01 15:48:49 24 4
gpt4 key购买 nike

我正在尝试使用jQuery将服务器响应中的pdf文件下载到客户端。我的代码适用于Windows,Android,Chrome和Mozilla上的Linux,即能够下载具有正确名称的pdf数据文件并可以打开它。但是在Safari和Chrome中的iOS设备(iphone,ipad等)上能够弹出用于下载带有“文档”名称的文件,而不是我在代码中指定的名称。此外,该文件将被保存而没有任何扩展名,并添加了此 header -Content-Disposition: attachment; filename="MyFileName.ext"所有这些仅在iOS中发生。以下是我用于在iOS中下载pdf文档的代码

                var reader = new FileReader();
var parsedData = JSON.parse(response);
var parsedResult = _base64ToArrayBuffer(parsedData[0])
var blobOutput = new Blob([parsedResult], { type: 'application/pdf' });
var documentLink = document.createElement('a');
documentLink.style = "display: none";

reader.onload = function (e) {
documentLink.href = reader.result;
documentLink.download = parsedData[2]; // contains file name
document.body.appendChild(documentLink);
documentLink.click();
}
reader.readAsDataURL(blobOutput);
This是browserstack在iOS 13设备上的屏幕截图。
还检查了苹果是否已修复此错误 here,但我无法使其正常工作。任何帮助,将不胜感激。提前致谢!

最佳答案

最后,我删除了我在服务器上获取响应并对响应中所执行的响应执行操作的所有客户端代码,并使用asp.net的FileContentResult添加了服务器端文件下载。
以下是代码片段,可在大多数平台上下载文件。
我已经在Windows,Android,Linux,Chrome和Firefox浏览器以及iOS(Safari)浏览器上的MacOS上进行了个人测试,它会下载带有正确名称和扩展名的pdf文件。
在iOS Chrome浏览器上进行下载是噩梦,似乎无法强制下载。我尝试过,但是弹出的具有正确名称的可下载文件给了我“无法下载”错误,因此打开了可以在iOS Chrome设备上打印的文件。
已使用的应用程序/八位位组,因为它强制客户端下载文件。

[HttpGet]
public FileResult ProccessCertificate(string val)
{

var result = obj.CertificateService(val); //api call to fetch data
byte[] data = Convert.FromBase64String(result[0]); //this contains pdf data
string contentType = System.Net.Mime.MediaTypeNames.Application.Octet;

List<string> iDevices = new List<string> { "iPad", "iPhone", "iPod" };
var agent = Request.UserAgent;
//if its an iOS device used with chrome browser - open as pdf, as download fails on iOS Chrome
if (iDevices.Any(val => agent.IndexOf(val, StringComparison.OrdinalIgnoreCase) > 0) && agent.IndexOf("Crios", StringComparison.OrdinalIgnoreCase) > 0)
{
contentType = System.Net.Mime.MediaTypeNames.Application.Pdf;
}
return File(data, contentType, result[2]); //last param contain downloadfilename
}

关于javascript - 如何使用js在具有自定义名称的iOS中正确下载pdf文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62590018/

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