Axios 下载
· 阅读需 4 分钟
以get
请求,下载为例。一般项目中的axios
都是经过封装的,所以你需要关注有没有添加responseType
这是关键。
export const exportQuotation = (id: string | number) => {
return request({
responseType: 'blob', // 二进制流
url: '/dcomsp-sales/excelExport/v1/export',
method: 'get',
params: {
id,
},
})
}
通用下载函数
/**
* 下载文件
* @param fileData
* @param fileType
* @param fileName
*/
export function downloadFile(
fileData: any,
fileType: string,
fileName: string
): boolean {
let blob: Blob
let success = true // 假设初始状态为成功
// 创建 Blob 对象
try {
if (fileData instanceof Blob) {
blob = fileData
} else {
blob = new Blob([fileData], { type: fileType })
}
} catch (error) {
console.error('Error creating the Blob:', error)
return false
}
const a = document.createElement('a')
const url = window.URL.createObjectURL(blob)
// 下载后释放URL资源和清理逻辑
const cleanup = () => {
window.URL.revokeObjectURL(url)
document.body.removeChild(a)
}
try {
// 创建一个隐藏的可点击的a标签,然后模拟点击进行下载
a.href = url
a.download = fileName
a.style.display = 'none'
document.body.appendChild(a)
a.click()
} catch (error) {
console.error('Error triggering the download:', error)
success = false // 下载失败时,设置 success 为 false
} finally {
// 使用setTimeout确保清理逻辑在下载触发后立即执行
setTimeout(cleanup, 0)
}
return success // 返回下载的状态
}
使用,通过id
进行下载
const download = async (id: string | number) => {
// exportQuotation 是我的接口,拿到流数据传递给下载函数
const exportData = await exportQuotation(id)
// 创建下载
const res = downloadFile(
exportData.data,
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
`${id}-${Date.now()}.xlsx`
)
if (res) {
ElMessage.success('下载成功')
} else {
ElMessage.error('下载失败')
}
}
常用下载格式
后缀 | 类型 | 格式 |
---|---|---|
aac | AAC audio | audio/aac |
.abw | AbiWord document | application/x-abiword |
.arc | Archive document (multiple files embedded) | application/x-freearc |
.avi | AVI: Audio Video Interleave | video/x-msvideo |
.azw | Amazon Kindle eBook format | application/vnd.amazon.ebook |
.bin | Any kind of binary data | application/octet-stream |
.bmp | Windows OS/2 Bitmap Graphics | image/bmp |
.bz | BZip archive | application/x-bzip |
.bz2 | BZip2 archive | application/x-bzip2 |
.csh | C-Shell script | application/x-csh |
.css | Cascading Style Sheets (CSS) | text/css |
.csv | Comma-separated values (CSV) | text/csv |
.doc | Microsoft Word | application/msword |
.docx | Microsoft Word (OpenXML) | application/vnd.openxmlformats-officedocument.wordprocessingml.document |
.eot | MS Embedded OpenType fonts | application/vnd.ms-fontobject |
.epub | Electronic publication (EPUB) | application/epub+zip |
.gif | Graphics Interchange Format (GIF) | image/gif |
.htm .html | HyperText Markup Language (HTML) | text/html |
.ico | Icon format | image/vnd.microsoft.icon |
.ics | iCalendar format | text/calendar |
.jar | Java Archive (JAR) | application/java-archive |
.jpeg.jpg | JPEG images | image/jpeg |
.js | JavaScript | text/javascript |
.json | JSON format | application/json |
.jsonld | JSON-LD format | application/ld+json |
.mid.midi | Musical Instrument Digital Interface (MIDI) | audio/midi audio/x-midi |
.mjs | JavaScript module | text/javascript |
.mp3 | MP3 audio | audio/mpeg |
.mpeg | MPEG Video | video/mpeg |
.mpkg | Apple Installer Package | application/vnd.apple.installer+xml |
.odp | OpenDocument presentation document | application/vnd.oasis.opendocument.presentation |
.ods | OpenDocument spreadsheet document | application/vnd.oasis.opendocument.spreadsheet |
.odt | OpenDocument text document | application/vnd.oasis.opendocument.text |
.oga | OGG audio | audio/ogg |
.ogv | OGG video | video/ogg |
.ogx | OGG | application/ogg |
.otf | OpenType font | font/otf |
.png | Portable Network Graphics | image/png |
Adobe Portable Document Format (PDF) | application/pdf | |
.ppt | Microsoft PowerPoint | application/vnd.ms-powerpoint |
.pptx | Microsoft PowerPoint (OpenXML) | application/vnd.openxmlformats-officedocument.presentationml.presentation |
.rar | RAR archive | application/x-rar-compressed |
.rtf | Rich Text Format (RTF) | application/rtf |
.sh | Bourne shell script | application/x-sh |
.svg | Scalable Vector Graphics (SVG) | image/svg+xml |
.swf | Small web format (SWF) or Adobe Flash document | application/x-shockwave-flash |
.tar | Tape Archive (TAR) | application/x-tar |
.tif .tiff | Tagged Image File Format (TIFF) | image/tiff |
.ttf | TrueType Font | font/ttf |
.txt | Text, (generally ASCII or ISO 8859-n) | text/plain |
.vsd | Microsoft Visio | application/vnd.visio |
.wav | Waveform Audio Format | audio/wav |
.weba | WEBM audio | audio/webm |
.webm | WEBM video | video/webm |
.webp | WEBP image | image/webp |
.woff | Web Open Font Format (WOFF) | font/woff |
.woff2 | Web Open Font Format (WOFF) | font/woff2 |
.xhtml | XHTML | application/xhtml+xml |
.xls | Microsoft Excel | application/vnd.ms-excel |
.xlsx | Microsoft Excel (OpenXML) | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
.xml | XML | application/xml 代码对普通用户来说不可读 (RFC 3023, section 3)text/xml 代码对普通用户来说可读 (RFC 3023, section 3) |
.xul | XUL | application/vnd.mozilla.xul+xml |
.zip | ZIP archive | application/zip |
.3gp | 3GPP audio/video container | video/3gppaudio/3gpp(若不含视频) |
.3g2 | 3GPP2 audio/video container | video/3gpp2audio/3gpp2(若不含视频) |
.7z | 7-zip archive | application/x-7z-compressed |