vue3 和springboot配合如何实现服务器端文件的下载。

先看springboot的后台代码:

  1. @PostMapping("/download")
  2. @ResponseBody
  3. public void downloadWord(HttpServletResponse response, HttpServletRequest request,@Valid String filePath) {
  4.  
  5. try {
  6. //获取文件的路径filePath是服务器端存放文件的完整地址
  7. File file = ResourceUtils.getFile(filePath);
  8.  
  9. //文件后缀名
  10. String suffex = filePath.split("\\.")[1];
  11.  
  12. // 读到流中
  13. InputStream inStream = new FileInputStream(file);//文件的存放路径
  14. // 设置输出的格式
  15. response.reset();
  16. response.setContentType("bin");
    //文件名中午乱码的问题没有解决所以,文件名后端都叫1.XXX,最后文件名由前端重新修改
  17. response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("1."+suffex, "UTF-8"));
  18. // 循环取出流中的数据
  19. byte[] b = new byte[200];
  20. int len;
  21.  
  22. while ((len = inStream.read(b)) > 0) {
  23. response.getOutputStream().write(b, 0, len);
  24. }
  25. inStream.close();
  26. } catch (IOException e) {
  27. e.printStackTrace();
  28. }
  29. }

vue端:

网络请求使用axios ,文件下载使用file-saver

npm install file-saver --save  

bower install file-saver

注:axios参照vue axiox网络请求  ,如下代码不在同一个文件内,根据需求自行规划

  1. import axios from "axios"; // 引用axios
  2. import qs from 'qs';
  3.  
  4. const instance = axios.create({
  5. baseURL: config.baseUrl.dev,
  6. timeout: 60000,
  7. responseType: 'blob', //这里是关键
  8. withCredentials: true,
  9. crossDomain: true,
  10. transformRequest: [function(data) {
  11. data = qs.stringify(data);
  12. return data;
  13. }],
  14. headers: {
  15. 'apiVersion': 'v1',
  16. }
  17. });
  18.  
  19. export function postBlob(url, data = {}) {
  20. return new Promise((resolve, reject) => {
  21. instance.post(url, data)
  22. .then((response) => {
  23. resolve(response);
  24. })
  25. .catch((err) => {
  26. reject(err);
  27. });
  28. });
  29. }
  30.  
  31. //资源下载的接口定义
  32. export const resourceDownload = (params) => postBlob("/zy/download", params);
  33.  
  34. //资源下载的方法
  35. downLoadfunction(index) {
  36. //获得资源的名称
  37. let fileName = this.getFileName(this.data1[index].resourcesPath);
  38. //指定资源在服务期端的路径
  39. let paramter = {
  40. filePath: this.data1[index].resourcesPath
  41. };
  42. resourceDownload(paramter).then(res => {
  43. var FileSaver = require('file-saver');
  44. var blob = new Blob([res.data], {
  45. type: "text/plain;charset=utf-8"
  46. });
  47. FileSaver.saveAs(blob, fileName)
  48. })
  49. .catch(error => {});
  50. },
  51.  
  52. //获取文件名
  53. getFileName(url) {
  54. let name = "";
  55. if (url !== null && url !== "") {
  56. name = url.substring(url.lastIndexOf("/") + 1);
  57. } else {
  58. name = "无";
  59. }
  60. return name;
  61. },

vue+spingboot 实现服务器端文件下载功能的更多相关文章

  1. JAVA文件下载功能问题解决日志

    今天给报告系统做了个下载功能,遇到了挺多问题,通过查资料一一解决了. 1.首先遇到的问题是:java后台的输出流输出之后,没有任何报错,浏览器端不弹出保存文件的对话框,原本是ajax请求到后台的con ...

  2. 解决springmvc中文件下载功能中使用javax.servlet.ServletOutputStream out = response.getOutputStream();后运行出异常但结果正确的问题

    问题描述: 在springmvc中实现文件下载功能一般都会使用javax.servlet.ServletOutputStream out = response.getOutputStream();封装 ...

  3. WebView实现文件下载功能

    WebView控制调用相应的WEB页面进行展示.安卓源码当碰到页面有下载链接的时候,点击上去是一点反应都没有的.原来是因为WebView默认没有开启文件下载的功能,如果要实现文件下载的功能,需要设置W ...

  4. Vue (二) --- Vue对象提供的属性功能

    --------------------------------------------不是井里没有水,而是你挖的不够深. 3. Vue对象提供的属性功能 3.1 过滤器 过滤器,就是vue允许开发者 ...

  5. vue 对象提供的属性功能、通过axio请求数据(2)

    1 Vue对象提供的属性功能 1.1 过滤器 过滤器,就是vue允许开发者自定义的文本格式化函数,可以使用在两个地方:输出内容和操作数据中. 1.1.1 使用Vue.filter()进行全局定义(全局 ...

  6. Spring Boot实现文件下载功能

    我们只需要创建一个控制器(Controler)文件,即Controller目录下的File_Download.java,其完整目录如下: @Controller public class File_D ...

  7. Spring Boot入门(11)实现文件下载功能

      在这篇博客中,我们将展示如何在Spring Boot中实现文件的下载功能.   还是遵循笔者写博客的一贯风格,简单又不失详细,实用又能让你学会.   本次建立的Spring Boot项目的主要功能 ...

  8. vue教程2-07 微博评论功能

    vue教程2-07 微博评论功能 <!doctype html> <html> <head> <meta charset="utf-8"& ...

  9. ASP.NET网页中RAR、DOC、PDF等文件下载功能实例源代码

    以前做asp.net下载功能的时候都是采用:<a href="http://www.wang0214.com/wgcms">下载</a>的方式来实现下载. ...

  10. java web文件下载功能实现 (转)

    http://blog.csdn.net/longshengguoji/article/details/39433307 需求:实现一个具有文件下载功能的网页,主要下载压缩包和图片 两种实现方法: 一 ...

随机推荐

  1. Kotlin协程系列(三)

    1.前言 前面两节,我们运用了kotlin提供的简单协程去实现了一套更易用的复合协程,这些基本上是以官方协程框架为范本进行设计和实现的.虽然我们还没有直接接触kotlin官方协程框架,但对它的绝大多数 ...

  2. 使用咱们公司的DataInside可视化产品配置了一个教育行业的大屏展示软件

    今天在公司用配置了一个可视化大屏软件,大家觉得如何?

  3. java-EasyExcel模板导出

    前言:  需求:根据自定义模板导出Excel,包含图片.表格,采用EasyExcel 提示:EasyExcel请使用 3.0 以上版本, 对图片操作最重要的类就是 WriteCellData<V ...

  4. 寻找市场中的Alpha-WorldQuant功能的实现(下)

    导语:本文介绍Alpha的相关基本概念,以及寻找和检验Alpha的主要流程和方法.在上篇中我们梳理了 WorldQuant经典读本FindingAlphas的概要以及WebSim的使用.作为下篇,我们 ...

  5. Nginx服务器常用参数设置

    Nginx作为一个高性能的Web服务器和反向代理,它的性能可以通过调整底层操作系统的参数来进一步优化.以下是一些常见的操作系统级别的调整,通常针对Linux系统: File Descriptors L ...

  6. java通过url得到文件对象(支持http和https)

    文字标题:java通过url得到文件对象(支持http和https) 作者:锅巴 1.场景:通过一个url地址来得到一个文件,此方式就是通过一个url将文件下载到本地的临时文件,直接上代码 /** * ...

  7. Odoo16—国际化翻译

    开发odoo系统模块的时候,如果一开始就有国际化的需求,无论是模型的定义还是视图的构建,建议使用英语作为第一语言:一方面,英语本身就是一种国际化的语言:另一方面,odoo内置模型字段描述如Create ...

  8. Dest0g3 520迎新赛-CRYPTO MISC 复现

    CRYPTO babyRSA 题目 from Crypto.Util.number import bytes_to_long, getPrime from gmpy2 import next_prim ...

  9. SSH默认端口从22修改为其他端口

    1.在终端中使用root权限登录到您的Linux服务器. 2.打开终端,并使用适合您的文本编辑器(如vi.nano等)打开SSH配置文件.例如,通过运行以下命令之一: vi /etc/ssh/sshd ...

  10. Linux系统快速入门(完整版)

    LINUX基础知识 I.Linux概述 linux是啥? 一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的Un ...