精华内容
下载资源
问答
  • ajax请求文件流下载

    千次阅读 2018-05-24 19:35:00
    $.ajax({ // url:BASEURL+'/bill/download/invoice', url:'http://loan-test.yinshuitong.com/backorg/bill/download/invoice', typ...
    $.ajax({
                            // url:BASEURL+'/bill/download/invoice',
                            url:'http://loan-test.yinshuitong.com/backorg/bill/download/invoice',
                            type:'get',
                            data:{
                                invoiceIdStr:invoiceShell.id
                            },
                            crossDomain: true == !(document.all),
                            beforeSend: function(request) {
                                request.setRequestHeader("Authorization", tokenString);
                            },
                            responseType: 'blob',
                            success:function(result){
                                const excelBlob = result.data
                                if ('msSaveOrOpenBlob' in navigator) {
                                    // Microsoft Edge and Microsoft Internet Explorer 10-11
                                    window.navigator.msSaveOrOpenBlob(excelBlob, 'invoice.pdf')
                                } else{
                                    const elink = document.createElement('a') // 创建a标签
                                    elink.download = 'invoice.pdf'
                                    elink.style.display = 'none'
                                    const blob = new Blob([excelBlob])
                                    elink.href = URL.createObjectURL(blob)
                                    document.body.appendChild(elink)
                                    elink.click()
                                    document.body.removeChild(elink)
                                }
                            }
                        })

     

    转载于:https://www.cnblogs.com/SunShineM/p/9084755.html

    展开全文
  • 后端(express): Access-Control-Expose-... 使用jQuery接收文件流,获取的excel有乱码: 如果是按照如下格式写,就会有乱码问题,按照上面的方法就不会有问题: $.ajax({ ... responseType: 'blob' // 无效 ... })

    后端(express):

    Access-Control-Expose-Headers:暴露响应头供前端使用(Content-Disposition)

    router.post("/downExcel", (req, res) => {
      let assetsPath = path.resolve(__dirname, "../assets/1.xlsx");
      res.set("Access-Control-Expose-Headers", "Content-Disposition");
      // res.set("Content-Type", "application/vnd.ms-excel");
      res.set("Content-Type", "application/octet-stream");
      res.set("Content-Disposition", `attachment; filename=mino.xlsx`);
      fs.createReadStream(assetsPath).pipe(res);
    });

    前端:

    1. 原生XHR版

    let xhr = new XMLHttpRequest();
    xhr.responseType = "arraybuffer";
    xhr.open("post", "http://127.0.0.1:8080/download/downExcel", true);
    xhr.onreadystatechange = function () {
      if (this.readyState == 4 && this.status == 200) {
        let [_, fileName] = this.getResponseHeader(
          "Content-Disposition"
        ).match(/filename=(.*)$/);
        let blob = new Blob([xhr.response], {
          type: "application/vnd.ms-excel",
        });
        let link = document.createElement("a");
        link.href = window.URL.createObjectURL(blob);
        link.download = fileName;
        link.click();
        window.URL.revokeObjectURL(link.href);
      }
    };
    xhr.send();

    2. jQuery版

    $.ajax({
      method: "post",
      url: "http://127.0.0.1:8080/download/downExcel",
      xhrFields: {
        responseType: "arraybuffer",
      },
      success: function (res, _, xhr) {
        let [, fileName] = xhr
          .getResponseHeader("Content-Disposition")
          .match(/filename=(.*)$/);
        let blob = new Blob([res], {
          type: "application/vnd.ms-excel",
        });
        let link = document.createElement("a");
        link.href = window.URL.createObjectURL(blob);
        link.download = fileName;
        link.click();
        window.URL.revokeObjectURL(link.href);
      },
    });

    进阶:使用断点续传下载、上传文件 - 206


    Q:使用swagger-ui请求接口,返回的文件没有乱码,一旦使用jQuery接收文件流,获取的excel有乱码:

    A:      设置responseType时格式错误;要使用xhrFields。

    $.ajax({
        ...
        responseType: 'blob' // 无效
        ...
    })

     

    展开全文
  • AJAX接收文件流实现下载的两种方式

    千次阅读 2020-10-28 15:28:39
    AJAX接收文件流实现下载的两种方式 第一种: $("#download").click(function() { var ticketNumber=$("#ticketNumber").val(); var url = '/agent/risk/order/download?ticketNumber='+ticketNumber; var xhr = ...

    AJAX接收文件流实现下载的两种方式

    第一种:
         $("#download").click(function()  {
                var ticketNumber=$("#ticketNumber").val();
                var url = '/agent/risk/order/download?ticketNumber='+ticketNumber;
                var xhr = new XMLHttpRequest();
                xhr.open('POST', url, true);        // 也可以使用POST方式,根据接口
                xhr.responseType = "blob";    // 返回类型blob
                xhr.onload = function () {
                    if (this.status === 200) {
                        var blob = this.response;
                        var reader = new FileReader();
                        reader.readAsDataURL(blob);    // 转换为base64,可以直接放入a表情href
                        reader.onload = function (e) {
                            var a = document.createElement('a');
                            a.download = 'data.rar';//下载文件名
                            a.href = e.target.result;
                            $("body").append(a);    // 修复firefox中无法触发click
                            a.click();
                            $(a).remove();
                        }
                    }
                };
                // 发送ajax请求
                xhr.send()`在这里插入代码片`
            })
    
    第二种:
    $("#download").click(function() {
                var ticketNumber=$("#ticketNumber").val();
                var json  = {
                    "searchJson":ticketNumber
                };
                var form = $("<form>");
                form.attr('style', 'display:none');
                form.attr('target', '');
                form.attr('method', 'post'); //请求方式
                form.attr('action', basepath + '/agent/risk/order/download');//请求地址
    
                var input1 = $('<input>');//将你请求的数据模仿成一个input表单
                input1.attr('type', 'hidden');
                input1.attr('name', 'json');//该输入框的name
                input1.attr('value',JSON.stringify(json));//该输入框的值
    
                $('body').append(form);
                form.append(input1);
    
                form.submit();
                form.remove();
                //防止页面跳转
                return false;
            });
    
    展开全文
  • 使用Ajax生成流文件下载的功能,可以使用隐藏form的方式。需要的朋友可以参考下
  • 最近做项目遇到这样的需求:管理后台需要随时下载数据报表,数据要实时生成后转换为excel下载。怎么解决这个问题呢?下面小编给大家分享Ajax请求二进制进行处理(ajax异步下载文件)的简单方法,一起看看吧
  • 前台ajax 从后台获取文件流上传文件

    千次阅读 2018-11-02 16:44:56
    前台ajax请求 后台接收请求 读取某个文件夹下的文件 @ResponseBody  public void getPic(HttpServletRequest request,HttpServletResponse response,@RequestParam("path") String path) throws ...

    前台ajax请求

    后台接收请求  读取某个文件夹下的文件

    @ResponseBody
        public void getPic(HttpServletRequest request,HttpServletResponse response,@RequestParam("path") String path) throws IOException {
            path = path.replace("/", "\\");
            logger.info("--file dir---"+path);
            System.out.println("--file dir---"+path);
            //path = "C:/Users/Administrator/UsersAdministratorDocumentsAthenaEyeImagesimage.pdf";
            response.setStatus(HttpServletResponse.SC_OK);  
            //response.setContentType("application/pdf;charset=UTF-8");  
            BufferedInputStream input = new BufferedInputStream(new FileInputStream(path));  
            byte buffBytes[] = new byte[1024];  
            OutputStream out = null;
            try {
                out = response.getOutputStream();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }  
            int read = 0;    
            while ((read = input.read(buffBytes)) != -1) {    
                out.write(buffBytes, 0, read);    
            }  
            out.flush();    
            out.close();
        }

     

    从后台获取到文件流后 前台装换成 字节数组 再上传到服务器


        

    展开全文
  • Ajax导出文件

    千次阅读 2019-02-17 15:47:56
    因为在项目中涉及到了数据导出的问题,于是想通过Ajax请求后端,通过Response返回的形式来实现文件的导出功能… 由于原生的Ajax支持的数据返回类型dataType类型有三种:text,json,xml,不能返回,所以无法实.....
  • ajax上传文件

    千次阅读 2013-11-11 17:16:11
    我做了一个校验 ,想用ajax进行文件的验证,这时候就需要使用ajax上传文件进行验证   首先需要 一个js包  jquery 和 ajaxfileupload.js ajaxfileupload 下载地址 :   使用方法: 前台js $("#submitbtn")....
  • Ajax上传文件

    千次阅读 2012-08-25 20:30:47
    Ajax上传文件  2011-09-24 11:53:44| 分类:默认分类 | 标签:|字号大中小订阅 ...首先要说的就是 ajax 是无法实现上传文件的,可以想一下ajax与后台通信都是通过传递字符串,怎么能传递文件呢?其实出于安全考
  • 一、ajax请求获取二进制流文件解决办法 今天在做excel导出的时候,碰到了一系列问题,以下是记录。 首先,整个过程就是现在前台页面先封装好要下载...以下为后台php代码向前端输出文件流 header(‘filename:’....
  • ajax 下载文件

    2016-02-23 17:00:16
    JQuery的ajax函数的返回类型只有xml、text、json、html等类型,没有“”类型,所以我们要实现ajax下载,不能够使用相应的ajax函数进行文件下载。但可以用js生成一个form,用这个form提交参数,并返回“”类型的...
  • form表单提交文件Ajax提交文件 传统form表单设置enctype为multipart/form-data以二进制的形式向后台传 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert ...
  • Java 模拟Ajax上传文件

    2016-03-08 23:41:07
    Java 模拟Ajax上传文件近来翻看以前的写的学习笔记,发现有个问题看上去很老套,可动起手来还是写不好,没错,就是上传下载。工作中虽然经常用到,但总是不求甚解,大部分代码都交给了插件和原有框架。于是查了一些...
  • ... // 发送ajax请求 xhr.send() } 参考资料 受该文章启发 http://www.cnblogs.com/cdemo/p/5225848.html 转载于:https://my.oschina.net/watcher/blog/1525962
  • AJAX文件上传实现

    2014-04-28 16:46:16
    由于文件上传是以二进制的形式进行传输的,而身为AJAX的关键对象之一的xmlhttp对象传输的却是xml格式的字符,导致要我们想要真正的实现AJAX异步文件上传的梦想破灭。于是不笨的高层应用程序员只好放弃xmlhttp...
  • ajax实现文件上传(使用FormData)

    万次阅读 2018-12-11 00:36:24
    文件上传一般是同过表单来上传,但表单提交不满足所有情况,部分情况需要ajax上传文件 &lt;input type="file" id="file"&gt; js获取文件 var file=$('#file')[0].files[0]; 文件输出...
  • 今天在做导出项目的时候...以前我都是直接把文件写到某个路径比如c盘(如果在项目以为外可以做映射具)然后在用前端直接访问这文件就下载了,今天脑抽非要测试一下io输出文件于是,就出问了。解决办法就是用提交咯 ...
  • 最近做导出excel文件,怎么写下载的时候都是在浏览器输出的码,然后就想到是不是ajax请求不能直接请求下载文件,果然是这样。 ajax不能请求下载文件的原因: 因为response原因,一般请求浏览器是会处理服务器输出...
  • 问题描述前端发送ajax【get/post】请求,后端生成excel文件,最后用response输出文件流,没有报错也没有文件下载提示。最后网上搜索了一波,遇到过这个问题的还是不少,问题出在ajax本身,解决方法和原因也都找到。...
  • ajax异步文件下载

    2020-03-20 14:45:24
      文件下载是比较常用的一种功能,尤其是在excel下载,更是比较常用的。每次遇到下载功能,我也就a标签或者是form标签进行下载,a标签呢基本上就时只能get方式的下载,form可以get也可以post方式进行下载。但是这...
  • "AjaxPage/WebAjaxExportHisRPT.aspx?period="   +   period ;   setTimeout ( "downloadFrame.src=''" ,   6000 );   }   后台: public   void   GenerateXLS ( DataTable   dt ,  string ...
  • 因为后端一般都是使用response返回输出流,但是如果用ajax请求之后采用回掉函数并不能拉起下载界面,必须使用form提交的方式,代码如下。 var form = $("<form></form>"); form.attr('style','display...
  • 文件下载---ajax文件下载

    千次阅读 2019-06-10 09:43:29
    文件下载---工具类 public class Util { //定义日志对象 private Logger logger = Logger.getLogger(Util.class); @RequestMapping("downfile") public void downFile(HttpServletRequest request,...
  • SSM结合Ajax实现文件上传及分页

    千次阅读 2017-09-29 18:46:47
    讲下小编最近在做的一个实训项目:MC音乐在线网站,因为本人主要负责后台的编写,而歌曲少不了文件的上传和下载,但是文件上传在我的分工中有,所以这里我就只写我写的文件上传。其实下载也差不多,后续可能补上!!
  • ajax 上传文件 demo

    2015-12-09 15:43:41
    文件: $(function() { $("#btn").click(function() { uploadFile('file'); }); }); function uploadFile(id) { var pathName = $("#" + id).val(); if (pathName == "") { alert('请
  • ajax上传文件到本地

    千次阅读 2015-12-01 14:38:13
    //在 buf 数组中 取出数据 写到 (输出流)磁盘上 out.write(buf, 0, length); } in.close(); out.close(); response.getWriter().write("{'success':true}"); } } ...
  • /** * 1、文件上传---request仅仅接收二进制文件流(适用于后端调用rest进行文件上传) * @param request * @return */ @RequestMapping(value = "/uploadFile", method = RequestMethod.POST) public ...
  • 文件上传在Web程序中是常用...在JavaWeb中使用ajax技术实现带有进度条的文件上传,实现的方法有多种,大概逻辑分为:当客户端上传文件发送请求后,服务器将上传的文件写入某路径中,在此上传的过程中,将文件上传的...
  • 而一般情况下将客户端的文件包装成网络地址传递到服务器端然后通过来进行文件传输的任务都是使用浏览器来帮我们完成的,而且似乎我们非常难以插手进去。对于普通的form字段,我们可以手动拿到其中的值,然后封装成...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,736
精华内容 12,294
关键字:

ajax输出文件流