Browse Source

修改下载方法

master
zhouhaibin 2 months ago
parent
commit
701e991d5e
  1. 82
      src/api/common/api.ts

82
src/api/common/api.ts

@ -67,42 +67,56 @@ export const downloadonlinePreview = async (url, fileName,parameter) =>{
}
export const downloadResource = async (url, fileName,parameter) =>{
// let originUrl="http://localhost:3100"+apiUrl + url+"?path="+parameter.path+"&fileName="+parameter.fileName
// let previewUrl = originUrl + "&fullfilename=" + parameter.fileName; //带上文件名(带后缀)
// window.open( 'http://218.246.6.173:9002' + "/onlinePreview?url=" + encodeURIComponent(Base64.encode(previewUrl)))
url = apiUrl + url+"?path="+encodeURIComponent(parameter.path)+"&fileName="+parameter.fileName
console.log(apiUrl ,url,'previewUrl')
let filename = fileName
if (!fileName) {
filename = url.substring(url.lastIndexOf('/') + 1);
return getFileblob(url, parameter).then((data) => {
if (!data || data.size === 0) {
message.warning('文件下载失败');
return;
}
console.log(filename,'filename')
return fetch(url, {
method: 'GET',
cache: 'no-cache',
headers:{
Authorization: `Bearer ${getToken()}`,
// clientId: clientId,
},
}).then(res => {
const fileStream = streamSaver.createWriteStream(filename,{
//增加小视图,体现下载进度条与总大小
size : res.headers.get("content-length")
})
const readableStream = res.body
if (window.WritableStream && readableStream.pipeTo) {
return readableStream.pipeTo(fileStream)
if (typeof window.navigator.msSaveBlob !== 'undefined') {
window.navigator.msSaveBlob(new Blob([data]), fileName);
} else {
let url = window.URL.createObjectURL(new Blob([data]));
let link = document.createElement('a');
link.style.display = 'none';
link.href = url;
link.setAttribute('download', fileName);
document.body.appendChild(link);
link.click();
document.body.removeChild(link); //下载完成移除元素
window.URL.revokeObjectURL(url); //释放掉blob对象window.btoa(unescape(encodeURIComponent('我是一段需要处理的字符')))
}
window.writer = fileStream.getWriter()
const reader = res.body.getReader()
const pump = () => reader.read()
.then(res => res.done
? window.writer.close()
: window.writer.write(res.value).then(pump))
pump()
})
});
// console.log(apiUrl ,url,'previewUrl')
// let filename = fileName
// if (!fileName) {
// filename = url.substring(url.lastIndexOf('/') + 1);
// }
// console.log(filename,'filename')
// return fetch(url, {
// method: 'GET',
// cache: 'no-cache',
// headers:{
// Authorization: `Bearer ${getToken()}`,
// // clientId: clientId,
// },
// }).then(res => {
// const fileStream = streamSaver.createWriteStream(filename,{
// //增加小视图,体现下载进度条与总大小
// size : res.headers.get("content-length")
// })
// const readableStream = res.body
// if (window.WritableStream && readableStream.pipeTo) {
// return readableStream.pipeTo(fileStream)
// }
// window.writer = fileStream.getWriter()
// const reader = res.body.getReader()
// const pump = () => reader.read()
// .then(res => res.done
// ? window.writer.close()
// : window.writer.write(res.value).then(pump))
// pump()
// })
}
/**
* excel导出

Loading…
Cancel
Save