vue+spingboot 实现服务器端文件下载功能
vue3 和springboot配合如何实现服务器端文件的下载。
先看springboot的后台代码:
- @PostMapping("/download")
- @ResponseBody
- public void downloadWord(HttpServletResponse response, HttpServletRequest request,@Valid String filePath) {
- try {
- //获取文件的路径filePath是服务器端存放文件的完整地址
- File file = ResourceUtils.getFile(filePath);
- //文件后缀名
- String suffex = filePath.split("\\.")[1];
- // 读到流中
- InputStream inStream = new FileInputStream(file);//文件的存放路径
- // 设置输出的格式
- response.reset();
- response.setContentType("bin");
//文件名中午乱码的问题没有解决所以,文件名后端都叫1.XXX,最后文件名由前端重新修改- response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("1."+suffex, "UTF-8"));
- // 循环取出流中的数据
- byte[] b = new byte[200];
- int len;
- while ((len = inStream.read(b)) > 0) {
- response.getOutputStream().write(b, 0, len);
- }
- inStream.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
vue端:
网络请求使用axios ,文件下载使用file-saver
npm install file-saver --save
bower install file-saver
注:axios参照vue axiox网络请求 ,如下代码不在同一个文件内,根据需求自行规划
- import axios from "axios"; // 引用axios
- import qs from 'qs';
- const instance = axios.create({
- baseURL: config.baseUrl.dev,
- timeout: 60000,
- responseType: 'blob', //这里是关键
- withCredentials: true,
- crossDomain: true,
- transformRequest: [function(data) {
- data = qs.stringify(data);
- return data;
- }],
- headers: {
- 'apiVersion': 'v1',
- }
- });
- export function postBlob(url, data = {}) {
- return new Promise((resolve, reject) => {
- instance.post(url, data)
- .then((response) => {
- resolve(response);
- })
- .catch((err) => {
- reject(err);
- });
- });
- }
- //资源下载的接口定义
- export const resourceDownload = (params) => postBlob("/zy/download", params);
- //资源下载的方法
- downLoadfunction(index) {
- //获得资源的名称
- let fileName = this.getFileName(this.data1[index].resourcesPath);
- //指定资源在服务期端的路径
- let paramter = {
- filePath: this.data1[index].resourcesPath
- };
- resourceDownload(paramter).then(res => {
- var FileSaver = require('file-saver');
- var blob = new Blob([res.data], {
- type: "text/plain;charset=utf-8"
- });
- FileSaver.saveAs(blob, fileName)
- })
- .catch(error => {});
- },
- //获取文件名
- getFileName(url) {
- let name = "";
- if (url !== null && url !== "") {
- name = url.substring(url.lastIndexOf("/") + 1);
- } else {
- name = "无";
- }
- return name;
- },
vue+spingboot 实现服务器端文件下载功能的更多相关文章
- JAVA文件下载功能问题解决日志
今天给报告系统做了个下载功能,遇到了挺多问题,通过查资料一一解决了. 1.首先遇到的问题是:java后台的输出流输出之后,没有任何报错,浏览器端不弹出保存文件的对话框,原本是ajax请求到后台的con ...
- 解决springmvc中文件下载功能中使用javax.servlet.ServletOutputStream out = response.getOutputStream();后运行出异常但结果正确的问题
问题描述: 在springmvc中实现文件下载功能一般都会使用javax.servlet.ServletOutputStream out = response.getOutputStream();封装 ...
- WebView实现文件下载功能
WebView控制调用相应的WEB页面进行展示.安卓源码当碰到页面有下载链接的时候,点击上去是一点反应都没有的.原来是因为WebView默认没有开启文件下载的功能,如果要实现文件下载的功能,需要设置W ...
- Vue (二) --- Vue对象提供的属性功能
--------------------------------------------不是井里没有水,而是你挖的不够深. 3. Vue对象提供的属性功能 3.1 过滤器 过滤器,就是vue允许开发者 ...
- vue 对象提供的属性功能、通过axio请求数据(2)
1 Vue对象提供的属性功能 1.1 过滤器 过滤器,就是vue允许开发者自定义的文本格式化函数,可以使用在两个地方:输出内容和操作数据中. 1.1.1 使用Vue.filter()进行全局定义(全局 ...
- Spring Boot实现文件下载功能
我们只需要创建一个控制器(Controler)文件,即Controller目录下的File_Download.java,其完整目录如下: @Controller public class File_D ...
- Spring Boot入门(11)实现文件下载功能
在这篇博客中,我们将展示如何在Spring Boot中实现文件的下载功能. 还是遵循笔者写博客的一贯风格,简单又不失详细,实用又能让你学会. 本次建立的Spring Boot项目的主要功能 ...
- vue教程2-07 微博评论功能
vue教程2-07 微博评论功能 <!doctype html> <html> <head> <meta charset="utf-8"& ...
- ASP.NET网页中RAR、DOC、PDF等文件下载功能实例源代码
以前做asp.net下载功能的时候都是采用:<a href="http://www.wang0214.com/wgcms">下载</a>的方式来实现下载. ...
- java web文件下载功能实现 (转)
http://blog.csdn.net/longshengguoji/article/details/39433307 需求:实现一个具有文件下载功能的网页,主要下载压缩包和图片 两种实现方法: 一 ...
随机推荐
- Kotlin协程系列(三)
1.前言 前面两节,我们运用了kotlin提供的简单协程去实现了一套更易用的复合协程,这些基本上是以官方协程框架为范本进行设计和实现的.虽然我们还没有直接接触kotlin官方协程框架,但对它的绝大多数 ...
- 使用咱们公司的DataInside可视化产品配置了一个教育行业的大屏展示软件
今天在公司用配置了一个可视化大屏软件,大家觉得如何?
- java-EasyExcel模板导出
前言: 需求:根据自定义模板导出Excel,包含图片.表格,采用EasyExcel 提示:EasyExcel请使用 3.0 以上版本, 对图片操作最重要的类就是 WriteCellData<V ...
- 寻找市场中的Alpha-WorldQuant功能的实现(下)
导语:本文介绍Alpha的相关基本概念,以及寻找和检验Alpha的主要流程和方法.在上篇中我们梳理了 WorldQuant经典读本FindingAlphas的概要以及WebSim的使用.作为下篇,我们 ...
- Nginx服务器常用参数设置
Nginx作为一个高性能的Web服务器和反向代理,它的性能可以通过调整底层操作系统的参数来进一步优化.以下是一些常见的操作系统级别的调整,通常针对Linux系统: File Descriptors L ...
- java通过url得到文件对象(支持http和https)
文字标题:java通过url得到文件对象(支持http和https) 作者:锅巴 1.场景:通过一个url地址来得到一个文件,此方式就是通过一个url将文件下载到本地的临时文件,直接上代码 /** * ...
- Odoo16—国际化翻译
开发odoo系统模块的时候,如果一开始就有国际化的需求,无论是模型的定义还是视图的构建,建议使用英语作为第一语言:一方面,英语本身就是一种国际化的语言:另一方面,odoo内置模型字段描述如Create ...
- Dest0g3 520迎新赛-CRYPTO MISC 复现
CRYPTO babyRSA 题目 from Crypto.Util.number import bytes_to_long, getPrime from gmpy2 import next_prim ...
- SSH默认端口从22修改为其他端口
1.在终端中使用root权限登录到您的Linux服务器. 2.打开终端,并使用适合您的文本编辑器(如vi.nano等)打开SSH配置文件.例如,通过运行以下命令之一: vi /etc/ssh/sshd ...
- Linux系统快速入门(完整版)
LINUX基础知识 I.Linux概述 linux是啥? 一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的Un ...