SpringBoot/SpringMVC 下载本地文件
页面代码:
<!DOCTYPE html>
<html lang="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<head>
<title>标题</title>
</head>
<body>
<h2>It works!</h2>
<a href="/downloadLocalXlsxFile">Local xlsx file download</a>
</body>
</html>
<script type="text/javascript">
<!--
// 脚本
//-->
</script>
后台代码:
package com.example.demo;
import java.io.FileInputStream;
import java.net.URLDecoder;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@SpringBootApplication
public class SpringBootWeb1Application {
public static void main(String[] args) {
SpringApplication.run(SpringBootWeb1Application.class, args);
}
@RequestMapping("/")
public String index() {
return "index.html";
}
@RequestMapping("/downloadLocalXlsxFile")
public void downloadLocalXlsxFile(HttpServletResponse res, HttpServletRequest req) throws Exception {
String localFilename = "Book1.xlsx";
String localFilepath = getClass().getResource("/templates/" + localFilename).getPath();
res.setContentType("multipart/form-data");
res.setCharacterEncoding("UTF-8");
res.setContentType("text/html");
String userAgent = req.getHeader("User-Agent");
if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {
// IE Core
localFilename = java.net.URLEncoder.encode(localFilename, "UTF-8");
} else {
// Non-IE Core
localFilename = new String((localFilename).getBytes("UTF-8"), "ISO-8859-1");
}
res.setHeader("Content-Disposition", "attachment;fileName=" + localFilename);
localFilepath = URLDecoder.decode(localFilepath, "UTF-8");
FileInputStream instream = new FileInputStream(localFilepath);
ServletOutputStream outstream = res.getOutputStream();
int b = 0;
byte[] buffer = new byte[1024];
while ((b = instream.read(buffer)) != -1) {
outstream.write(buffer, 0, b);
}
instream.close();
if (outstream != null) {
outstream.flush();
outstream.close();
}
}
}
SpringBoot/SpringMVC 下载本地文件的更多相关文章
- flask 下载本地文件
下载本地文件就是找到文件路径 调用flask自带的send_file(路径)下载, 并返回 flask: # 下载文件 from flask import send_file@task_mgm.ro ...
- SSH上传/下载本地文件到linux服务器
在linux下一般用scp这个命令来通过ssh传输文件. 1.从服务器上下载文件 scp username@servername:/path/filename /var/www/local_dir(本 ...
- 如何从TFS(Visual Studio Team Foundation Server)映射下载本地文件夹
1.连接tfs项目 首先打开vs2017 ——>工具栏 中的 团队——> 选择团队的管理链接 2.选择管理工作区 显示管理工作区的弹窗,点击 编辑 显示弹窗,选择本地文件夹(即要保存 ...
- XShell上传、下载本地文件到linux服务器
Python之道发表于程序员八阿哥订阅 1.2K 腾讯云服务器 年付3折起 首次购买云服务器 最低3折起 超高性价比 限时抢购 Xshell很好用,然后有时候想在windows和linux上传或下载某 ...
- linux学习 XShell上传、下载本地文件到linux服务器
(一)通过命令行的方式 1.linux服务器端设置 在linux主机上,安装上传下载工具包rz及sz; 如果不知道你要安装包的具体名称,可以使用yum provides */name 进行查找系统自带 ...
- java web 下载本地文件并弹出下载框
window.open("/dept/download") jsp代码 @RequestMapping(value = "/download", method ...
- [SpringBoot/SpringMVC]从Webapp下载一个大文件出现java.lang.OutOfMemoryError: GC overhead limit exceeded怎么办?
本文示例工程下载:https://files.cnblogs.com/files/xiandedanteng/WebFileDownload20191026.rar 制作一个Webapp,让其中一个网 ...
- Java传统下载和SpringMVC下载
/** * 传统下载 * @param filename 文件名称 */ @RequestMapping(value="download", method={RequestMeth ...
- SpringMVC文件上传下载(单文件、多文件)
前言 大家好,我是bigsai,今天我们学习Springmvc的文件上传下载. 文件上传和下载是互联网web应用非常重要的组成部分,它是信息交互传输的重要渠道之一.你可能经常在网页上传下载文件,你可能 ...
随机推荐
- linux centos Supervisor守护.netcore进程安装配置
场景:当部署完.netcore程序后 使用dotnet xx.dll 后可以运行,但关闭shell或隔断时间会自动断开,此时部署的.netcore程序就不能访问了,此时需要用到Supervisor了 ...
- MySQL中SQL语句常见优化策略
1.避免全表扫描 对查询进行优化,应尽量避免全表扫描,首先应考虑在where 及order by 涉及的列上建立索引. 2.避免判断null 值 应尽量避免在where 子句中对字段进行null 值判 ...
- 网络编程基础之TCP编程学习(一)
网络编程基础了解 socket套接字 socket是一种通讯机制,它包含一整套的调用接口和数据结构的定义,他给应用程序提供了使用如TCP/UDP等网络通讯的手段. linux中的网络编程通过socke ...
- Linux开机启动项总结
在应急响应时有时会遇到系统被植入后门,添加启动项等操作,如果不清楚启动项的话,可能会被黑客植入一些开机启动项,无法彻底清除后门程序,所以在这梳理下启动项的东西 1.操作系统接管硬件以后,首先读入 /b ...
- SQL Join 理解
对各种连接的理解,可以参照文章. 下面是对连接结果表条数统计的思考:假设有主表Ta有5条记录,从表Tb有4条记录 Ta corss join Tb, 结果为2表做笛卡尔积,5*4=20条 /*下面其它 ...
- 关于python logging模块读文档的几个心得
1. logger是分层级的,root是所有logger的祖先. 2. root这个logger在执行logging.warning() 等一系列方法和basicConfig()的时候才会被初始化ha ...
- Selenium(一)自动化测试简介
1.软件开发流程 产品分析需求--架构师确认系统包含哪些模块--开发编码--开发和测试一起做单元测试--测试开展版本(集成)测试(使用手工测试,测试通过后,才开始设计脚本)--测试开展系统测试--最后 ...
- python大战EXCEL--xlwings
xlwings的特色 xlwings能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改 可以和matplotlib以及pandas无缝连接 可以调用Excel文件中VBA写好的程序 ...
- node.js之文件读写模块,配合递归函数遍历文件夹和其中的文件
fs.stat会返回文件夹会文件的属性 var fs = require('fs'); var wenwa = function (pathname,callback) { fs.stat(pathn ...
- CKEditor5 输入文字时拼音和汉字同时输入问题
在使用 CKEditor5 + vue 时,出现输入文字时,拼音和文字一起输入到编辑器到问题.与之前项目中使用 ckeditor 的区别是,这次项目是在 python 架构下局部引入 ckeditor ...