Vue 导出二进制流文件

这段代码展示了如何在JavaScript中创建一个Blob对象并下载为指定名称的Excel文件。它利用了`a`标签的`download`属性来实现文件下载,对于不支持此属性的浏览器,代码则使用`navigator.msSaveBlob`作为备选方案。
 downloadBlob(res) {
      const blob = new Blob([res]);
      const fileName = "职业装尺寸统计表.xlsx"
      if ("download" in document.createElement("a")) {
        const link = document.createElement("a");
        link.download = fileName;
        link.style.display = "none";
        link.href = URL.createObjectURL(blob);
        document.body.appendChild(link);
        link.click();
        URL.revokeObjectURL(link.href);
        document.body.removeChild(link);
      } else {
        navigator.msSaveBlob(blob, fileName);
      }
    },
### 配置说明 在使用 Vue 框架下载二进制文件流时,可以通过配置 Nginx 服务器来实现静态资源的访问。例如,可以将打包好的静态包放入指定目录,并配置 Nginx 监听端口和根目录路径。以下是一个典型的 Nginx 配置示例: ```nginx server { listen 8200; server_name vue.local; root F:/vue-project/dist; index index.html; access_log logs/vue.access.log; error_log logs/vue.error.log; location / { try_files $uri $uri/ /index.html; } } ``` 此配置确保了 Vue 应用能够通过指定端口访问,并且所有请求都会被重定向到 `index.html` 文件,这对于单页应用来说非常有用 [^1]。 ### 下载二进制文件流的方法 在 Vue 中下载二进制文件流通常涉及以下几个步骤: 1. **安装依赖**:需要安装 `file-saver` 和 `xlsx` 插件来处理文件的保存和 Excel 文件的生成。 ```bash npm install file-saver xlsx -S ``` 2. **引入依赖**:在组件中引入所需的模块。 ```javascript import FileSaver from 'file-saver'; import XLSX from 'xlsx'; ``` 3. **编写下载方法**:编写一个方法来处理文件的下载。假设有一个表格 ID 为 `sonTable`,可以通过以下方式将其内容导出为 Excel 文件。 ```javascript exportExcel(excelName) { var xlsxParam = { raw: true }; // 转换成 Excel 时使用原始格式 var wb = XLSX.utils.table_to_book(document.querySelector('#sonTable'), xlsxParam); var wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' }); try { FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), excelName + '.xlsx'); } catch (e) { if (typeof console !== 'undefined') console.log(e, wbout); } return wbout; } ``` 4. **处理远程文件**:如果需要从远程 URL 下载 Excel 文件并处理其内容,可以使用以下方法。 ```javascript let urlNew = url.replace(/http:/, 'https:'); // 将 URL 转换为 HTTPS readWorkbookFromRemoteFile(urlNew, workbook => { let param = readWorkbook(workbook); param.arrs; // 表格数据 param.first_rows; // 表头 }); ``` 这些方法不仅适用于下载本地生成的 Excel 文件,还适用于从远程服务器下载并处理 Excel 文件 [^3]。 ### 常见问题及解决方案 1. **无法重启服务器**:如果遇到无法重启服务器的情况,检查 Nginx 配置是否正确,确保没有语法错误,并确认端口是否被其他服务占用 [^1]。 2. **文件下载失败**:确保 `file-saver` 和 `xlsx` 插件已正确安装,并且在导出文件时没有出现异常。检查浏览器控制台是否有错误信息 [^3]。 3. **跨域问题**:如果从远程 URL 下载文件时遇到跨域问题,确保服务器端已正确配置 CORS 策略,允许前端域名访问 [^4]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值