本地项目需要下载阿里云上的文件,而且需要前端下载后打包
1、配置多个代理
devServer: {
host: '0.0.0.0',
port: port,
proxy: {
[process.env.VUE_APP_BASE_API]: {
target: `http://192.168.0.114:8088`,
changeOrigin: true,
pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: ''
}
},
'/oa': {
target: 'http://hsh-dongyu.oss-cn-beijing.aliyuncs.com/',
pathRewrite: {
'^/oa': '/oa'
},
changeOrigin: true,
},
},
disableHostCheck: true
},
2、代理地址
http://hsh-dongyu.oss-cn-beijing.aliyuncs.com/oa/1608795278991/%25E5%2593%25A6%25E5%259A%25AF%25E5%259A%25AF.docx?Expires=1924154962&OSSAccessKeyId=LTAI4G2mj8FUZ9g8xRrKSCV1&Signature=MUFTmuL8BiA0335HK0D94QrXGxxxxxxx
http://hsh-dongyu.oss-cn-beijing.aliyuncs.com/oa/1608795278991/%25E5%2593%25A6%25E5%259A%25AF%25E5%259A%25AF.docx?Expires=1924154962&OSSAccessKeyId=LTAI4G2mj8FUZ9g8xRrKSCV1&Signature=MUFTmuL8BiA0335HK0D94QrXGxxxxxxx
3、修改地址,使其匹配代理
var url1 = '上面地址1';
var url2 = '上面地址2';
url2 = url2.slice(url2.indexOf('/oa'))
url2 = url2.slice(url2.indexOf('/oa'))
4、安装下载打包的依赖包
npm add axios
npm add jszip
npm add file-saver
5、封装下载方法
import axios from 'axios'
import JSZip from 'jszip'
import FileSaver from 'file-saver'
const getFile = url => {
return new Promise((resolve, reject) => {
axios({
method:'get',
url,
responseType: 'blob',
}).then(data => {
resolve(data.data)
}).catch(error => {
reject(error.toString())
})
})
}
export default {
methods: {
handleBatchDownload() {
const data = [url1 , url2]
const zip = new JSZip()
const cache = {}
const promises = []
data.forEach(item => {
const promise = getFile(item).then(data => {
const arr_name = item.split("/")
const file_name = arr_name[arr_name.length - 1]
zip.file(file_name, data, { binary: true })
cache[file_name] = data
})
promises.push(promise)
})
Promise.all(promises).then(() => {
zip.generateAsync({type:"blob"}).then(content => {
FileSaver.saveAs(content, "打包下载.zip")
})
})
}
}
6、执行handleBatchDownload()方法即可打包下载
7、注意:
1.文件名称需要根据项目来修改,当文件名称后缀为正确的文件后缀时,则表示修改成功。
2.下载方法执行时 403则为跨域了说明跨域匹配失败,其他问题根据业务需求修改下载方法。
8、参考文章
https://www.mmxiaowu.com/article/59b23f5d5b06a403cf687ed6
https://blog.youkuaiyun.com/weixin_34185512/article/details/93916884?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.control
https://blog.youkuaiyun.com/liwan_1219/article/details/103879821