javascript
APIRequest.downloadRequest({
id: row.id, // 从当前数据行获取文件唯一标识
}).then(res => {
// 将响应数据转换为Blob对象
const blobData = new Blob([res], {
type: 'application/octet-stream' // 设置二进制流类型
});
// 创建临时URL
const url = window.URL.createObjectURL(blobData);
// 创建下载链接元素
const link = document.createElement('a');
link.href = url;
// 设置下载文件名(使用数据行中的objectName属性)
link.setAttribute('download', row.objectName || 'download_file');
// 将链接添加到DOM中(部分浏览器需要元素在文档中才能触发下载)
document.body.appendChild(link);
// 模拟点击下载
link.click();
// 下载完成后移除临时元素
setTimeout(() => {
document.body.removeChild(link);
// 释放URL对象
window.URL.revokeObjectURL(url);
}, 100);
// 显示成功提示
this.$message.success(`文件"${row.objectName}"下载成功`);
}).catch(error => {
// 错误处理
console.error('下载失败:', error);
this.$message.error('文件下载失败');
});
这个扩展版本增加了以下细节:
- 添加了Blob的类型指定
- 增加了默认文件名处理
- 添加了URL对象的释放
- 加入了错误处理逻辑
- 完善了下载完成后的清理工作
- 在成功提示中显示具体的文件名
- 使用setTimeout确保DOM操作完成