Vue----二进制文件导出

Vue----二进制文件导出

当浏览器接收的是二进制的文件,需要导出时 ‘
1.传统的导出方式

const exportExcle = async () => {
  try {
    const response = await axios.get("/api/export",{
      // 返回二进制数据
      // blob 对象用来处理 二进制数据 response.data 返回的是二进制数据
      responseType: "blob"
    });
    // 这里的url 是为本例中的二进制数据 创建的临时的url 
     const url= window.URL.createObjectURL(new Blob([response.data]));
     // 这行是在文档中创建一个《<a> 元素,但是不会显示在页面上
     const link = document.createElement("a");
     // 将之前创建的临时的url的值 赋值给a连接的href中 这样链接就指向了excel文件数据
     link.href = url;
     // 这里设置了dowload 属性,是在告诉用户当点击这个链接时应该下载url指向的数据 而不是导航到该url
      link.setAttribute("download", "products.xlsx");
     // 将创建的链接添加到文档的body 中
     document.body.appendChild(link);
     // 通过编程的方式 来触发链接 开始下载
     link.click();
  } catch (error) {
    console.error("导出 Excel 失败:", error);
    // 处理错误情况,例如显示错误消息给用户
  }
};

2.引入FileSaver.js库
这里使用saveAs 函数来触发文件下载
首先 先安装 file-saver 库
pnpm install file-saver

// 引入FileSaver.js库
import { saveAs } from 'file-saver';

// 定义一个异步函数来处理导出操作
const exportExcel = async () => {
  try {
    // 发送GET请求到服务器端的导出API
    const response = await axios.get('/api/export', { responseType: 'blob' });
    // 使用FileSaver.js库的saveAs函数来保存文件
    // saveAs(new Blob([response.data], { type: 'application/vnd.ms-excel' }), '文件名.xlsx');
    // 或者
   saveAs(response.data, "products.xlsx");
  } catch (error) {
    // 如果有错误发生,打印错误信息到控制台
    console.error('导出 Excel 失败:', error);
    // 可以在这里添加更多的错误处理逻辑,例如显示错误消息给用户
  }
};
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js 中进行导出时,可以使用 Axios 库进行请求和响应。要设置导出的 Content-Type,可以在 Axios 请求中设置“responseType”选项。 例如,如果您要将导出设置为 JSON 格式,则可以在 Axios 请求中添加以下代码: ```javascript axios.get('/api/export', { responseType: 'json' // 设置响应类型为 JSON }) .then(response => { // 处理响应数据 }) .catch(error => { // 处理错误 }) ``` 同样,如果您要将导出设置为二进制文件格式(如 Excel、PDF 等),则可以将“responseType”选项设置为“arraybuffer”: ```javascript axios.get('/api/export', { responseType: 'arraybuffer' // 设置响应类型为二进制文件 }) .then(response => { // 处理响应数据 }) .catch(error => { // 处理错误 }) ``` 在服务器端,您需要根据请求头中的“Accept”参数来确定用户需要的导出格式,并相应地设置响应头的“Content-Type”参数。例如,在 Express 框架中,您可以使用以下代码设置响应头: ```javascript app.get('/api/export', (req, res) => { const { accept } = req.headers; if (accept === 'application/json') { res.setHeader('Content-Type', 'application/json'); // 导出 JSON 格式文件 } else if (accept === 'application/pdf') { res.setHeader('Content-Type', 'application/pdf'); // 导出 PDF 格式文件 } else if (accept === 'application/vnd.ms-excel') { res.setHeader('Content-Type', 'application/vnd.ms-excel'); // 导出 Excel 格式文件 } else { // 不支持的导出格式 res.status(400).send('Unsupported export format'); } }); ``` 以上为示例代码,您需要根据实际情况进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值