oss pdf浏览器直接下载_前端从阿里云oss直接下载文件的方法
HTTP下载,即浏览器下载。浏览器中使用signatureUrl方法生成可下载的HTTP地址,URL的有效时间默认为半个小时。
以下代码用于HTTP下载:
let OSS = require("ali-oss");
let client = new OSS({
region: "",
accessKeyId: "",
accessKeySecret: "",
bucket: "",
});
let url = client.signatureUrl("object-key");
console.log(url);
let url = client.signatureUrl("object-key", {expires: 3600});
console.log(url);
阿里云文档内容结束---------------------------------
上面的代码在阿里云的文档中很容易查到,这个根据key返回的url如果直接打开只能是预览文件的效果,不能直接下载。
为了解决这个问题,有2种方法。
1、可以使用xhr去请求这个链接,获取到blob形式的数据流,然后进行下载,代码如下。
x.open("GET", url, true);
x.responseType = "blob";
x.onload=function(e){
const blob = x.response;
if ("msSaveOrOpenBlob" in navigator) {
window.navigator.msSaveOrOpenBlob(blob, name);
} else {
const downloadUrl = URL.createObjectURL(blob);
console.log("downloadUrl",downloadUrl)
const a = document.createElement("a");
a.href = downloadUrl;
a.download = name;
document.body.appendChild(a);
a.click();
a.remove();
window.URL.revokeObjectURL(downloadUrl);
}
}
x.send();
2、在请求阿里云链接的时候加上响应头Content-Disposition的配置 ,完整代码如下,这种方式简单的多了
let ossClient = new OSS(aliOssOptions);
let url = ossClient.signatureUrl(key, {
response: {
"content-disposition": `attachment; filename=${name}`
}
});
location.href = url;
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)