大概就是点击一个按钮,然后弹出一个目录选择器,但是该按钮可以触发多个资源的下载,这些资源都放置在同一个目录下。
这种需求一般都需要把所有资源打包成一个zip文件,就能实现再同一个目录下了,这个步骤一般是由服务端操作, 前端也行不过很少弄
npm install jszip
npm install file-saver
import axios from 'axios'
import JSZip from "jszip";
import FileSaver from "file-saver";
videoData:['/video/26519f026fc012521605563015227403.mp4','/video/f7b9cdae14ad51e491b62742f71c43e7.mp4','/video/1f82d79e0a9ef414419275a5f1d6bb94.mp4'],
download1(){
var videoData = this.videoData;
const zip = new JSZip();
var promises = [];
videoData.forEach(item => {
const promise = this.getFile(item).then(data => {
const arr_name = item.split("/");
const file_name = arr_name[arr_name.length - 1]; // 获取文件名
console.log(data)
zip.file(file_name, data, { binary: true });
});
promises.push(promise);
});
Promise.all(promises).then(() => {
console.log("全部下载完成");
zip.generateAsync({ type: "blob" }).then(content => {
// 生成二进制流
console.log("生成压缩包");
FileSaver.saveAs(content, "时间戳.zip");
});
});
},
getFile(url){
return new Promise((resolve, reject) => {
axios({
method: "get",
url:url,
responseType: "blob"
})
.then(data => {
resolve(data.data);
})
.catch(error => {
reject(error.toString());
});
});
},
8 回答5.9k 阅读✓ 已解决
9 回答9.3k 阅读
6 回答4.8k 阅读✓ 已解决
3 回答10.4k 阅读✓ 已解决
4 回答7.3k 阅读
5 回答7.2k 阅读✓ 已解决
5 回答8.2k 阅读
File System Api 应该可以满足你的需求。
https://developer.mozilla.org/zh-CN/docs/Web/API/File_System_API