SpringBoot文件的上传与下载
⒈文件实体类
package cn.coreqi.security.entities; public class FileInfo { private String path; public FileInfo(String path) {
this.path = path;
} public String getPath() {
return path;
} public void setPath(String path) {
this.path = path;
}
}
⒉控制器代码
package cn.coreqi.security.controller; import cn.coreqi.security.entities.FileInfo;
import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.Date; @RestController
public class FileController { @PostMapping("/file")
public FileInfo upload(MultipartFile file) throws IOException {
System.out.println(file.getName()); //文件名
System.out.println(file.getOriginalFilename()); //原始文件名
String folder = "d:/test";
File localFile = new File(folder,new Date().getTime() + ".txt");
file.transferTo(localFile); //将上传的文件写入到本地的文件中
return new FileInfo(localFile.getAbsolutePath()); //绝对路径
} @GetMapping("/file/{id}")
public void download(@PathVariable String id, HttpServletRequest request, HttpServletResponse response){
try(
InputStream inputStream = new FileInputStream(new File("d:/test/1553692860875.txt"));
OutputStream outputStream = response.getOutputStream();
) {
response.setContentType("application/x-download");
response.addHeader("Content-Disposition","attachment;filename=test.txt");
IOUtils.copy(inputStream,outputStream);
outputStream.flush(); } catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
⒊测试
/**
* 上传文件测试
*/
@Test
public void whenUploadSuccess() throws Exception {
//mockMvc.perform(MockMvcRequestBuilders.fileUpload("/file")
String result = mockMvc.perform(MockMvcRequestBuilders.multipart("/file")
.file(new MockMultipartFile("file","test.txt","multipart/form-data","hello upload".getBytes("UTF-8"))))
.andExpect(status().isOk())
.andReturn().getResponse().getContentAsString();
System.out.println(result);
}
SpringBoot文件的上传与下载的更多相关文章
- java实现ftp文件的上传与下载
最近在做ftp文件的上传与下载,基于此,整理了一下资料.本来想采用java自带的方法,可是看了一下jdk1.6与1.7的实现方法有点区别,于是采用了Apache下的框架实现的... 1.首先引用3个包 ...
- 在SpringMVC框架下实现文件的 上传和 下载
在eclipse中的javaEE环境下:导入必要的架包 web.xml的配置文件: <?xml version="1.0" encoding="UTF-8" ...
- SecureCRT使用sz和rz命令进行文件的上传和下载
SecureCRT可以使用sz和rz命令进行文件的上传和下载. sz文件下载: 格式:sz 文件名称 即可将服务器的文件下载至本地. rz文件上传: 格式:rz 文件名称 即可将本地文件上传至服务器. ...
- 使用FTPClient进行文件服务器内文件的上传和下载
我用的FTPClient是由Apache组织的commons-net.jar包中的API,这个包用起来非常的方便,很容易上手.我在项目开发的过程中主要用到了文件的上传和下载功能,下面将我开发的代码贴出 ...
- iOS开发中文件的上传和下载功能的基本实现-备用
感谢大神分享 这篇文章主要介绍了iOS开发中文件的上传和下载功能的基本实现,并且下载方面讲到了大文件的多线程断点下载,需要的朋友可以参考下 文件的上传 说明:文件上传使用的时POST请求,通常把要上传 ...
- Apache FtpServer 实现文件的上传和下载
1 下载需要的jar包 Ftp服务器实现文件的上传和下载,主要依赖jar包为: 2 搭建ftp服务器 参考Windows 上搭建Apache FtpServer,搭建ftp服务器 3 主要代码 在ec ...
- 初学Java Web(7)——文件的上传和下载
文件上传 文件上传前的准备 在表单中必须有一个上传的控件 <input type="file" name="testImg"/> 因为 GET 方式 ...
- java web(四):request、response一些用法和文件的上传和下载
上一篇讲了ServletContent.ServletCOnfig.HTTPSession.request.response几个对象的生命周期.作用范围和一些用法.今天通过一个小项目运用这些知识.简单 ...
- 黏包-黏包的成因、解决方式及struct模块初识、文件的上传和下载
黏包: 同时执行多条命令之后,得到的结果很可能只有一部分,在执行其他命令的时候又接收到之前执行的另外一部分结果,这种显现就是黏包. 只有TCP协议中才会产生黏包,UDP协议中不会有黏包(udp协议中数 ...
随机推荐
- Javascript实现base64的加密解密
//1.加密解密方法使用: //1.加密 var str = '124中文内容'; var base = new Base64(); var result = base.encode(str); // ...
- newCachedThreadPool 的使用
newCachedThreadPool的线程池特点: (1)它是一个可以无限扩大的线程池:它比较适合处理执行时间比较小的任务:corePoolSize为0,maximumPoolSize为无限大,意味 ...
- Win 10 Edge不能上网,微软商店打不开的问题
微软商店(Microsoft Store)的 Code: 0x80072EE7 Check Your Connection问题,和Edge的Can't Reach this page的问题.网上找了很 ...
- “纽劢科技杯”第十六届同济大学程序设计竞赛暨上海邀请赛同步赛 J-张老师的游戏
传送门 题目描述 在空闲时间,张老师习惯性地和菜哭武玩起了取石子游戏,这次的游戏规则有些不同,在他们面前有n堆石子,其中,第i堆石子的个数为a[i],现在制定规则如下: 从张老师开始, ...
- Helicute FPV App Privacy Policy
Personal Data collected for the following purposes and using the following services: Device permissi ...
- luogu P2194 HXY烧情侣
残忍的题面 我们来看这一道题,其实冗长的题目告诉我们一个核心——用tarjan tarjan是用来干什么呢?是用来求强连通分量(代码中指sc) 求出来又有什么用呢?每当我们求出一个强连通分量时,就去计 ...
- BZOJ2406矩阵——有上下界的可行流+二分答案
题目描述 输入 第一行两个数n.m,表示矩阵的大小. 接下来n行,每行m列,描述矩阵A. 最后一行两个数L,R. 输出 第一行,输出最小的答案: 样例输入 2 2 0 1 2 1 0 1 样例输出 1 ...
- Redis的两种持久化方式详细介绍
一,Redis是一款基于内存的数据库,可以持久化,在企业中常用于缓存,相信大家都比较熟悉Redis了,下面主要分享下关于Redis持久化的两种模式 1.半持久化模式(RDB,filesnapshott ...
- grafana备份
#!/bin/bash #自动备份grafana数据库并上传到云盘 NOWDATE=`date +%Y-%m-%d` YUNPAN_USER=xxxx YUNPAN_PASSWD=XXXXXXXXXX ...
- linux下编译visp库
#下载源码git clone "https://github.com/lagadic/visp.git"#work目录mkdir work#build目录mkdir build#c ...