我的 JavaScript 代码如下。它用于下载 PDF,该 PDF 作为数据 url 从服务器返回。
fetch('/Documents/GenerateReportPdf',
{
method: 'POST',
body: formData,
})
.then(response => {
return response.json();
})
.then(data => {
const fileName = `Report.pdf`;
const downloadLink = document.createElement('a');
downloadLink.href = data.url;
downloadLink.download = fileName;
downloadLink.click();
})
.catch(err => {
console.error(err);
});
响应JSON是这样的:
url: "data:application/pdf;base64,......."
此代码适用于桌面网络浏览器,并且文件已成功下载,但在移动设备上没有下载任何文件,并且我也没有收到任何错误。
我认为桌面浏览器和移动设备之间的区别在于点击和触摸。在移动设备中,它们正常工作,但您使用“download.click()”模拟了“单击”操作。有时它不起作用,因为 onClick 和 onTouch 不同。也许移动端认为 click() 不合适。在屏幕上制作“a”并让用户单击它或使用路线怎么样?