首页 > 其他分享 >vue+Springboot下载文件

vue+Springboot下载文件

时间:2022-09-02 13:12:09浏览次数:84  
标签:vue Springboot bufferedInputStream downUrl outputStream downloadElement new null

前端代码

<el-button type="primary" @click="dowload2('1662023440868上传测试.jpg')">下载</el-button>

  js代码

 dowload2(msg){
          let href = "http://localhost:9090/myFiles/downloadFile?flag="+msg;
          let downloadElement = document.createElement('a')
          downloadElement.style.display = 'none'
          downloadElement.href = href
          document.body.appendChild(downloadElement)
          // 点击下载
          downloadElement.click()
      },

 后端代码

 @RequestMapping("/downloadFile")
    public void downloadFiles(@RequestParam("flag") String downUrl, HttpServletRequest request, HttpServletResponse response) {
        downUrl = "D:/FileUpload/"+downUrl;
        System.out.println("downUrl========"+downUrl);
        OutputStream outputStream = null;
        InputStream inputStream = null;
        BufferedInputStream bufferedInputStream = null;
        byte[] bytes = new byte[1024];
        File file = new File(downUrl);
        String fileName = file.getName();
        System.out.println("本次下载的文件为" + downUrl);
        // 获取输出流
        try {
            // StandardCharsets.ISO_8859_1 *=UTF-8'
            // response.setHeader("Content-Disposition", "attachment;filename=" +  new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1));
            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
            // 以流的形式返回文件
            response.setContentType("application/octet-stream;charset=utf-8");
            inputStream = new FileInputStream(file);
            bufferedInputStream = new BufferedInputStream(inputStream);
            outputStream = response.getOutputStream();
            int i = bufferedInputStream.read(bytes);
            while (i != -1) {
                outputStream.write(bytes, 0, i);
                i = bufferedInputStream.read(bytes);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (inputStream != null) {
                    inputStream.close();
                }
                if (outputStream != null) {
                    outputStream.close();
                }
                if (bufferedInputStream != null) {
                    bufferedInputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
      }
    

  

 

标签:vue,Springboot,bufferedInputStream,downUrl,outputStream,downloadElement,new,null
From: https://www.cnblogs.com/xianz666/p/16649474.html

相关文章

  • SpringBoot整合Redis
    14、SpringBoot整合Redis14.1、概述SpringBoot操作数据库:spring-data,jpa,jdbc,mongodb,redisSpringData也是和SpringBoot齐名的项目!说明:在SpringBoot2.x之后,原来使用的jed......
  • springboot项目使用jsp
    异常问题场景提示:这里简述项目相关背景springboot课堂学习问题详情提示:这里描述项目中遇到的问题jsp无法访问原因分析提示:这里填写问题的分析没有jsp解......
  • Linux软件包常见的几种下载、安装方法
    在线源下载和安装如果服务器是处于在线状态,在使用默认下载源是外国的情况下,安装更新软件包往往会比较痛苦的存在,下载了许久来一个超时就gg了。国内有许多镜像源,完美的解决......
  • vue-element-admin v4.4 学习--1安装篇
    0.学习文档 https://www.bookstack.cn/read/vue-element-admin-4.4-zh/9a23281a80e29fc9.md 1.安装#克隆项目gitclonehttps://github.com/PanJiaChen/vue-eleme......
  • Vue实现CSDN评论区的抽屉drawer效果,不需要用el-drawer组件。
    一、效果预览二、代码思路1、思路:在当前页面添加一个浮动的div组件,用v-if绑定显示与否,点击评论图标的时候,显示该div<!--评论弹窗--><divv-if="drawer"class......
  • elementui对于vue表单自定义校验
    在<el-form-itemlabel="原因"prop="reson":rules="条件==值?[{required:true,message:'原因不能为空',trigger:'blur'}]:[{requ......
  • ESP8266转RS485/RS232/TTL控制板-下载和运行第一个程序(arduino)
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/circuit_module/8266_485_industrial"frameborder="0"scrolling="auto"width="100%"height="1500"><......
  • M3U8下载器加嗅探浏览器
    M3U8下载器太多了,随便一抓一大把,没什么新奇的。下载地址: https://comm.zhaimaojun.cn/AllSources/ToolDetail/?tid=10046 ......
  • vue,回车事件触发登录按钮
    1.(html)登录按钮<button@click="loginButton"@keyup.enter="keyDown(e)">登录</button>2.登录方法methods:{login(){//这是登录方法}}3.键盘弹起......
  • 关于ag-grid-vue导出excel表格 进行内容valueFormatter
    最近在写ag-grid-vue的项目,用到了导出Excel功能,但是导出的数据是原始数据,不怎么理想,后来找了点方法进行处理,导出效果很好 <AgGrid...:defaultE......