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;

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐