接口返回文件流,如何下载

XMLHttpRequest Level 2

支持请求。responseType = ‘blob‘

返回的就是二进制流

       

       var blob = result;          // ie 使用
            if (window.navigator.msSaveBlob) {
                // for ie 10 and later
                try {
                    var blobObject = new Blob([blob]);
                    window.navigator.msSaveBlob(blobObject, filename);
                } catch (e) {
                    console.log(e);
                }
            } else {          // 其他浏览器 下载方式
                var reader = new FileReader();
                reader.readAsDataURL(blob);
                reader.onload = function(e) {
                    // 转换完成,创建一个a标签用于下载
                    var a = document.createElement(‘a‘);
                    a.download = filename;
                    a.href = e.target.result;

                    // 兼容触发click
                    var evt = document.createEvent("MouseEvents");
                    evt.initEvent("click", true, true);
                    a.dispatchEvent(evt);
                }
            }
时间: 2024-08-29 11:55:40

接口返回文件流,如何下载的相关文章

webapi返回文件流

逻辑说明 webapi返回类型为IHttpActionResult接口,内部方法返回HttpResponseMessage. public interface IHttpActionResult { Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken); } 参照JsonResult<T>,自定义返回文件流. 主要为:设置文件响应内容流,文件内容类型,文件名. HttpResponse

js接收文件流并下载

js接收文件流并下载 标签(空格分隔): js 在此输入正文 <script type="text/javascript"> function download(filename) { var oReq = new XMLHttpRequest(); oReq.open("GET", "<你的返回流的Action路径>", true); oReq.responseType = "blob"; oReq.

vue中使用axios处理post方法导出excel表格(后端返回文件流)

使用: vue.axios 接口要求: post方法.入参为json格式.出参文件流 1.请求函数 exportExcel: function(form) { return axios({ // 用axios发送post请求 method: 'post', url: '/serviceTime/exportData', // 请求地址 data: form, // 参数 responseType: 'blob', // 表明返回服务器返回的数据类型 headers: { 'Content-Typ

c++ Qt向PHP接口POST文件流

Qt调用PHP写的接口,向其传递图片文件,并保存在服务器. 二进制文件无法直接传递,Qt采用Base64进行编码发送,PHP解码保存为文件. 注意:PHP收到数据之后会将POST过来的数据中的加号(+)替换为空格,造成接收到的数据不全,无法正常还原的问题,这里采用在PHP解码之前先将所有空格替换为+号的方法. Qt文件: //Qt文件 QFile file("1.jpg"); if(!file.open (QIODevice::ReadOnly)){ qDebug()<<&

通过文件流stream下载文件

public ActionResult ShowLocalizedXML(int id) { string orderName = ""; string xmlString = GetXmlStream(id,out orderName); ViewBag.Xml = xmlString; XmlDocument doc = new XmlDocument(); doc.CreateComment(xmlString); byte[] array = Encoding.UTF8.Get

http接口返回文件 服务端和客户端

服务端: @RequestMapping(value = "/lsj", method = {RequestMethod.POST, RequestMethod.GET}, produces = {"text/plain;charset=UTF-8"}) @ResponseBody public String searchLsjDzzz(String jsonStr,HttpServletResponse httpServletResponse) { byte[]

axios 请求接口获取文件流数据导出数据到excel,解决乱码

axios.get("URL",{ params:{ data1:data1, data2:data2 }, headers: { 'Content-Type': 'application/json,charset=utf-8'},    responseType: 'arraybuffer', //二进制流 } ).then(res => { console.log(res); let blob = new Blob([res], { type: 'application/vn

struts 文件上传下载

上传 1.编写上传action类 UploadAction.java 1 package jxf.b_upload; 2 3 import java.io.File; 4 import java.io.IOException; 5 6 import javax.servlet.http.HttpServletRequest; 7 8 import org.apache.commons.io.FileUtils; 9 import org.apache.struts2.ServletActionC

4、struts2 文件上传下载

1.文件上传 struts提交的文件组件上传, 前台: 1.提交方式POST 2.表单类型 multipart/form-data 3.input type=file 后台: Apache提供的FileUpload组件 核心类: FileItemFactory FileItem的工厂 ServletFileUpload servlet 中的文件上传的核心类 FileItem 封装了上传的表单文件项的信息 总之 文件上传,处理起来比较麻烦 Struts的文件上传 文件上传拦截器帮助我们晚场了文件上