前端处理后台传过来的二进制流进行下载,并处理乱码

附上代码及注释

        //注意请求的时候要加上{responseType:'blob'}参数
this.$axios.post("/api/xxx/xxx/xxx",this.$qs.stringify({range:0,}),{responseType:'blob'}).then(msg=>{
                console.log(msg.data) //打印出来是blob对象,已经不是乱码了
                let url = window.URL.createObjectURL(msg.data); //表示一个指定的file对象或Blob对象
                console.log(url,"看一下这是啥")
                let a = document.createElement("a"); 
                document.body.appendChild(a);
                let fileName=msg.headers["content-disposition"].split(";")[1].split("=")[1];  //filename名称截取
                a.href = url;
                a.download = fileName; //命名下载名称
                a.click(); //点击触发下载  
                window.URL.revokeObjectURL(url);  //下载完成进行释放
        })

特别注意:

在和后台交互的时候,如果后台返回给我们的是二进制流数据,我们就要在发送的时候加上{responseType:'blob'}这行代码,这样返回给我们的就不是乱码了。

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
后端可以使用式上传技术缓存前端传来的二进制式上传是一种将文件或二进制数据分块上传到服务器的技术,它可以有效地减少内存占用和网络带宽的消耗。 以下是一个基于Node.js的示例代码,演示如何使用式上传技术缓存前端传来的二进制: ```javascript const http = require('http'); const fs = require('fs'); http.createServer((req, res) => { if (req.method === 'POST') { // 创建可写 const writableStream = fs.createWriteStream('data.bin'); // 接收数据块 req.on('data', chunk => { // 将数据块写入可写 writableStream.write(chunk); }); // 接收完毕 req.on('end', () => { // 关闭可写 writableStream.end(); // 返回响应 res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Upload complete'); }); } else { // 返回表单页面 res.writeHead(200, { 'Content-Type': 'text/html' }); res.end(` <form method="post" action="/" enctype="multipart/form-data"> <input type="file" name="file"> <button type="submit">Upload</button> </form> `); } }).listen(3000, () => { console.log('Server started'); }); ``` 以上代码中,我们创建了一个HTTP服务器,并在其中处理POST请求。当收到POST请求时,我们创建了一个可写,并通过req.on('data', callback)方法接收数据块,然后将其写入可写中。当数据接收完毕时,我们关闭可写,并返回响应。在实际应用中,我们可以将数据块写入缓存文件或数据库中,以实现数据的持久化存储。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值