vue30 后台给文件路径 前端怎么写好下载 才是最优 请提供下代码 怎么写也支持大文件下载并显示进度
前端可以使用axios库进行文件下载,并使用axios的进度条来显示下载进度。
以下是示例代码:
// 下载文件的方法
function downloadFile(url) {
return axios({
url: url,
method: 'GET',
responseType: 'blob',
onDownloadProgress: progressEvent => {
// 进度条显示
const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total)
console.log('下载进度:' + percentCompleted + '%')
}
}).then(response => {
// 文件下载成功后的处理
const url = window.URL.createObjectURL(new Blob([response.data]))
const link = document.createElement('a')
link.href = url
link.setAttribute('download', 'file.pdf')
document.body.appendChild(link)
link.click()
})
}
// 调用下载方法
downloadFile('/path/to/file.pdf')
在这个示例代码中,我们使用了axios库来发起GET请求,并且设置了responseType为blob,以便能够下载文件。我们还使用了axios的onDownloadProgress方法来显示下载进度。
在文件下载成功后,我们创建了一个URL对象,将文件内容转换为Blob,并将其作为链接的href属性值。最后,我们创建一个a标签,将链接添加到DOM中,并模拟用户点击以下载文件。
请注意,这个示例代码并没有对大文件进行特殊处理,所以如果下载的文件非常大,可能会导致内存溢出或其他问题。因此,如果需要处理大文件,请使用流式下载或其他相关技术
原文地址: https://www.cveoy.top/t/topic/dUbX 著作权归作者所有。请勿转载和采集!