可能的问题有很多,我遇到的问题是域名不同,所以只能预览,不能下载
最后解决办法是,用http请求文件,接口返回文件流,前端处理后,就可以下载了
具体代码如下 ⬇️
var array = "";
$.ajax({
type: "GET",
async: false, // false是不采用异步的方式
mimeType: "text/pdf;charset=x-user-defined",
url: file,//这里放pdf的url
responseType: "blob",
success: function (data) {
//data返回的文件流
var rawLength = data.length;
array = new Uint8Array(new ArrayBuffer(rawLength));
for (var i = 0; i < rawLength; i++) {
array[i] = data.charCodeAt(i) & 0xff; //转二进制流
}
const link = document.createElement("a");
let blob = new Blob([array], { type: "application/pdf" });
let url = URL.createObjectURL(blob);
link.href = url;
link.download = file;//这里我用的是pdf的url,具体名字也可以自定义,例如1.pdf
link.click();
},
});Ï
随便搞个html文件就可以试了
记得引入jq的在线链接
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.js"></script>
但是很困扰我的一个问题是我用axios,给一样的参数就不能用
jq的ajax就没问题,有大神可以帮忙解答下吗?感谢!