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应用非常重要的组成部分,它是信息交互传输的重要渠道之一.你可能经常在网页上传下载文件,你可能 ...
 
随机推荐
- m3u8系列(一)练手spider
			
本次目标 http://www.qiqi.la/vod-detail-id-46194.html 目的,down魔道祖师,实现 前期分析文件得到以下粗略步骤 1 进入二级页面,找到 <ifram ...
 - JAVA处理数字与中文数字互转(最大处理数字不超过万兆即:9999999999999999.9999)
			
package practice; import java.util.Arrays; /** * 数字与中文数字互转(最大处理数字不超过万兆即:9999999999999999.9999) * @au ...
 - Image Processing and Analysis_21_Scale Space:Edge Detection and Ridge Detection with Automatic Scale Selection——1998
			
此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...
 - Django中使用缓存
			
settings中的配置 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache ...
 - C#中两个List<TModel>中根据指定条件--判断并获取不同数据的数据集合2
			
方式一:Linq List<Test> list = new List<Test>(); list.Add(new Test { score = 10, name = &quo ...
 - docker安装redis并以配置文件方式启动
			
镜像相关 redis镜像 # 不限定版本 docker pull redis # 拉取 redis为4.0.9版本的镜像 docker pull redis:4.0.9 # 拉取之后查看镜像 dock ...
 - Wireless Network(并查集)
			
POJ - 2236 #include<iostream> #include<algorithm> #include<cstring> #include<cm ...
 - Java基础 IO流的文件和目录的五类主要操作
			
笔记: /** IO流的 文件和目录的操作 * 1.路径需要 需要两个反斜杠 或者一个单斜杠! * 绝对路径:包括盘符在内的完整的路径名! * 相对路径:在当前目录文件下的路径! * 2.File 是 ...
 - C# List<T> 集合使用
			
1.初始化集合 , ); , ); , ); ) { graham, emerson, mario }; 2. 添加元素 racers.Add(, )); racers.Add(, )); racer ...
 - 解压 .tar.xz 格式的压缩文件
			
第一种方法: xz -d mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz tar -xvf mysql-8.0.16-linux-glibc2.12-x86_64 ...