content-disposition
前后端先约定好返回头部信息content- disposition
注意处理好返回值,把响应头信息返回
axios. interceptors. response. use (
( response) => {
return Object. assign ( response. data, { headers: response. headers} ) ;
} ,
( error) => {
throw error;
}
)
相关方法
export function formatFileName ( headers) {
const patt = new RegExp ( 'filename=([^;]+\\.[^\\.;]+);*' )
const contentDisposition = decodeURIComponent ( headers[ 'content-disposition' ] )
const result = patt. exec ( contentDisposition)
let fileName = result[ 1 ]
fileName = fileName. replace ( /\"/g , '' )
return fileName
}
export function download ( blob, fileName) {
if ( window. navigator. msSaveOrOpenBlob) {
navigator. msSaveBlob ( blob, fileName)
} else {
var link = document. createElement ( 'a' )
link. href = window. URL . createObjectURL ( blob)
link. download = fileName
document. body. appendChild ( link)
link. click ( )
document. body. removeChild ( link)
}
}
方法调用demo
async downloadFile ( id) {
try {
const res = await fileDownloadFile ( { id: id } )
const fileName = formatFileName ( res. headers)
download ( res, fileName)
} catch ( error ) { }
}