post方式返回文件流实现前端blob下载,responseType: ‘blob‘无效

responseType为blob的请求,如何获取错误信息 【代码】responseType为blob的请求,如何获取错误信息。 阅读详情
responseType: 'blob'

一般情况下,下载分为好几种,但是常用的是get下载文件流直接下载

post下载文件流是很少见的,但是鉴于参数太多,不能走get 只能走post下载,post下载分为两种:

1.form表单下载

2.post返回文件流转成blob下载,研究了很久 也很坑,上代码:

这个地方如果responseType设为blob的话,返回的文件流将会被转成blob对象,不是文件流,但是无论怎么设置都没有转成blob对象,网上有很多解释,

一个是说封装好的axios设置responseType是无效的,于是乎,我就引入了原生axios,手动添加token认证和content-type,但是返回结果依然是文件流,兜兜转转后来才发现最坑的是mockjs的引入,mockjs会影响responseType的设置转换,项目中注释掉mockjs即可实现成功blob的转换,还有就是可以修改mockjs的原生代码,如果需要用到mockjs的简友们可以修改代码,不过偶同步更新依赖包的时候记得及时修改,如果mockjs可以在项目中抛弃的话建议直接main.js中删除引入,毕竟还有其他的坑.

【JavaScript】使用 responseType: “blob“ 请求文件流时拦截报错信息处理 FileReader 对象允许 Web 应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File 或 Blob 对象指定要读取的文件或数据。下载文件时,后台返回错误的 code 无法直接拦截,因为此时数据已经被包装成 blob,所以需要将 blob 转换为 json 解析。readAsText 方法可以将 Blob 或者 File 对象转根据特殊的编码格式转化为内容 (字符串形式) 阅读详情

相关推荐

深入解析车载以太网DoIP诊断:Wireshark实战TCP/UDS报文分析

本文深入解析车载以太网DoIP诊断,重点介绍如何利用Wireshark进行TCP/UDS报文实战分析。文章详细讲解了从以太网帧、IP帧、TCP段到DoIP协议及UDS服务的逐层拆解方法,并提供了使用Wireshark定位通信故障(如乱序、丢包、重传)的实用技巧,帮助工程师高效排查车载诊断网络问题。

c2d3e4f的博客 674

前端文件导出设置responseType为blob时遇到的问题

导出文件接口返回code和msg如何获取。

weixin_46018417的博客 7803

5G协议栈逆向工程:基于开源模拟器的核心网信令分析实战

本文详细介绍了基于开源模拟器Free5GC和UERANSIM的5G协议栈逆向工程实战,涵盖核心网信令分析、环境搭建、认证协议解析及安全漏洞验证。通过NGAP/NAS信令交互解密和异常流量注入测试,帮助研究人员深入理解5G网络安全机制,并提供实用的安全加固建议。

weixin_29250573的博客 676

前端下载文件流,设置返回值类型responseType:‘blob‘无效的问题

本是一个非常简单的请求,即是下载文件。通常的做法如下:1.前端通过Vue Axios向后端请求,同时在请求中设置响应体为Blob格式。2.后端相应前端的请求,同时返回Blob格式的文件给到前端(如果没有步骤1设置响应体,则后端返回的是一个文件流,前端)3.前端创建a标签进行下载如果后端返回的是文件的地址,那么前端可以直接通过加文件路径即可下载文件。但是如果后台返回的是文件流,那么前端就需要做一些处理。处理的核心也是将文件流转成文件,然后使用a标签模拟点击下载。

Amelian的博客 7335

PHP实战:5分钟搞定SM4国密加密算法集成(附完整代码)

本文提供了一份可直接用于生产环境的PHP SM4国密加密算法集成实战指南。文章详细解析了SM4算法核心,对比了ECB与CBC工作模式,并给出了包含完整代码、密钥管理、数据填充及性能优化的解决方案,帮助开发者快速、安全地在PHP项目中集成国密加密算法。

2a4s6d8f0g的博客 342

开源多波束声呐数据集:从原始回波到AI识别的关键一步

本文探讨了开源多波束前视声呐数据集(UATD)在AI目标识别中的关键作用。通过分析原始回波数据与处理后数据的差异,揭示了开源数据集如何降低研究成本、提升实验可重复性,并加速技术迭代。文章还详细解析了UATD数据集的结构、实战应用技巧及从原始数据到AI模型的完整流程,为水下目标识别研究提供了宝贵参考。

weixin_28675839的博客 422

vue接收后端返回的文件流,下载文件(post和get)。前端的集中文件下载方式。大文件下载

后台返回一个File类型的数据给前端, 请求的时候 1、设置返回类型responseType,不管你用post\get\ect都要设置 2、使用blob类型接收 3、销毁URL对象 this.$axios.post(this.$api.getThesisExcel(),paper,{ responseType: 'blob',//设置返回类型 }).then((res)=>{ const link=document.cre

clmmei_123的博客 2万+

YOLO11涨点优化:创新多尺度卷积注意力(MSCA)模块,小目标检测神器!

MSCA模块通过创新的多尺度设计,在保持计算效率的同时显著提升小目标检测能力。实验证明,在YOLOv5/v8等模型上嵌入MSCA后,mAP提升超过2%,小目标检测精度提升近4%,且计算代价增加极小。注意力机制的未来发展方向动态核尺寸:根据输入特征自适应调整卷积核大小跨模态融合:结合RGB与深度/热力图等多模态信息自监督优化:利用对比学习预训练注意力模块尝试在你的YOLO模型中插入MSCA模块,欢迎在评论区分享你的涨点结果!参考文献。

QQ_778132974的博客 470

SpringBoot + 原生Ajax的文件流下载:blob和responseType='arrayBuffer'的关系

1. SpringBoot服务 @ResponseBody @RequestMapping(value = "/exportExcel", method = RequestMethod.POST) public byte[] exportExcel() { try { FileInputStream fs = new FileInputStream("d:\\TempLate.xlsx...

太古时代的专栏 1万+

lammps后处理:堆垛层错和孪晶的数量统计

python调用ovito包可以免费实现ovito pro版本的功能,不需要安装ovito pro软件,如统计位错线长度、CNA结构、键角分布等,如需深入学习,可考虑报名python ovito后处理课程,或lammps一对一课程。lammps金属变形模拟中,可能会产生堆垛层错或者孪晶等结构,但是ovito免费版本无法统计这些结构的数量。使用python和ovito软件包,则可以方便的统计出这些结构的数量。大家好,我是小马老师。

lammps_jiayou的博客 467

华为OD机试 - 进制转换 - 二进制(Python/JS/C/C++ 2024 B卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题。

学Java,找哪吒 917

前端下载EXCEL文件,后端返回文件流的处理

转载:https://www.cnblogs.com/coconutGirl/p/12605562.html 前端下载EXCEL文件,后端返回文件流的处理 axios({ url: '下载接口URL', method: 'post', data: {}, responseType: 'blob' }).then((res) => { // data就是接口返回的文件流 let data = res.data if (data) { let attrs = res.h

xiaoma19941027的博客 7080

基于GA-PSO-BP混合神经网络的多输入多输出数据预测-Python代码实现

多输入多输出数据预测

2301_80449389的博客 2783

【采坑分享】导出文件流responseType:“blob“如何提示报错信息

近日业务中导出按钮需要直接下载接口中的文件流,导出文件流responseType:"blob"如何提示报错信息?方法如下……

happy921212的博客 5038

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

前端基于axios请求下载文件(后端返回Blob文件流)

前端工作遇到需要做下载文件功能应该如何处理

m0_61676604的博客 4218

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

前端接受后端文件流并下载的几种方法

项目中经常会遇到需要导出列表内容,或者下载文件之类的需求。结合各种情况,我总结了前端最常用的三种方法来接受后端传过来的文件流并下载,针对不同的情况可以使用不同的方法。 首先是后端将文件转换成byte数组 /** * 将文件转换成byte数组 * @param filePath 文件File类 通过new File(文件路径) * @return byte数组 */ public static byte[] File2byte(File filePath).

qq_42957435的博客 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

前端下载后台返回的文件流zip类型文件

之前开发的项目中都是单个下载文件,可以利用的方法有很多,例如: 1、FileReader实例的readAsDataURL()方法 2、window.URL对象的createObjectURL()方法(需要注意下载完成后利用revokeObjectURL()方法释放内存) 3、直接window.open 且基本都是通过GET请求来获取,然后这次碰到情况跟以前有点不一样。 第一这次是通过post请求来获取文件流;第二需要下载的是zip类型的文件(因为是批量下载),这就让我有点摸不着头脑,然后经过我花费

qq_32445707的博客 1万+

后台接口返回文件流前端实现文件下载

前因:传参后发起post请求,后台接口返回的是二进制文件流,接收的内容如图: 后果:将接收到的文件流直接下载并保存到本地。 要下载的文件是一个.zip 压缩包。 按一般方式请求后台接口,打印接口返回的内容: 下载方法: dwonload() { if (this.$refs.checkIssueForm('ruleForm')) { let params = { remark: this.remark } this.$ajax.post('/api/downloa

风如也的博客 1万+

前端接受后端文件流并下载的几种方法var blob = new Blob([content]); URL.createObjectURL(blob);

前言 项目中经常会遇到需要导出列表内容,或者下载文件之类的需求。结合各种情况,我总结了前端最常用的三种方法来接受后端传过来的文件流并下载,针对不同的情况可以使用不同的方法。 方法一 使用场景 针对后端的get请求 具体实现 &lt;a href="后端文件下载接口地址" &gt;下载文件&lt;/a&gt; 直接用个&lt;a&gt;标签来接受后端的文件流 方法二 使用场景 ...

cpongo55 1万+

【post请求下载文件流】如何使用post请求下载文件流 blob

最近有个需求,做文件的下载。其实下载没什么要特别说的,之前都是用的get请求,这次不同,后台用的post请求,返回的是数据流,这种post请求下载文件的方式倒是没怎么弄过。记录一下。 接口 接口地址为: /file/download/${id} 前端请求这里要注意(这个是重点)设置 responseType: 'blob'。 我这里用 axios 请求,代码如下: import {axios} from '../../config'; import {BaseURL} from "@/serv.

jmszl1991的博客 1万+

Vue 实现post请求文件下载

前端发送post请求,接受后端返回的文件流实现文件下载 // 导出 submitDownload() { axios({ url: 'url地址', method: 'post', data: this.formInline, responseType: 'blob' // 重点在于配置responseType: 'blob' }).then(res => { const link = document.createElemen

weixin_42547971的博客 3246

前端文件流的一些简单处理(前端下载文件的方式)(接口正常,图片显示不出来?)

图片上的显示问题比较少,大部分都是直接antd组件,人家处理好了,所以不用担心. 主要是下载文件怎么处理 先说图片的显示问题吧.文件流都是二进制.相信大多数人和我一样笨笨的,旧直接 ajax 或者 axios 请求了.但是发现请求一切正常,但是就是没有文件被下载下来. 文件传输都是二进制,原始的xmlhttprequest 1版本,ajax不支持文件流,jquery也一样.所以默认处理二进制就直接文本乱码显示了,也不会当作附件下载下来. 当然xmlhttprequest 2 标准中支持文件流.并且用xhr.

qq_44786519的博客 1727

vue 下载文件时,设置返回值类型responseType为‘blob‘无效的问题

vue 下载文件时,设置返回值类型responseType为‘blob‘,但是未生效问题解决

xiyu_webSE的博客 2328

前端接收文件流并下载解决乱码问题

后端返回文件流,前端可能会导出txt或者excel的时候,里面的中文会出现乱码 如果这个接口是get的请求的话就可以直接通过以下方式直接下载 window.location.href = '请求文件流的接口地址' 因为存在多种场景,可能需要通过不同查询值,或者选中部分数据才能导出的话,这时候通常会用到POST请求,但是请求回来的数据流都存在乱码情况,在axios请求中加上responseType:‘blob’,注意:不是加在headers中,这个意思是将后台返回数据转为blob,还有一点需要强调。如果其他

拖鞋先生 1万+

前端接收后端传的文件流并下载解决乱码问题

常见的就是后台的导出功能、下载文件功能

这世上从不缺让人上头的新鲜感,能顾及你情绪的人实属难得。 6890
上一篇: Do not access Object.prototype method ‘hasOwnProperty‘ from target object
哈哈hyc
博客等级 码龄8年 131粉丝 87原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值