009 spring boot中文件的上传与下载
一:任务
1.任务
文件的上传
文件的下载
二:文件的上传
1.新建一个对象
FileInfo.java
package com.cao.dto;
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;
}
}
2.新建控制器
package com.cao.web.controller; import java.io.File;
import java.io.IOException;
import java.util.Date; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import com.cao.dto.FileInfo; @RestController
@RequestMapping("/file")
public class FileController {
@PostMapping
public FileInfo uploadFile(MultipartFile fileKey) throws Exception {
System.out.println("fileName: "+fileKey.getName());
System.out.println("OriginalFilename: "+fileKey.getOriginalFilename());
System.out.println("size: "+fileKey.getSize());
//将要存储在controller的目录下
String folder="E:\\workspace-sts-3.9.5.RELEASE\\it-security-demo\\src\\main\\java\\com\\cao\\web\\controller";
File localFile=new File(folder,new Date().getTime()+".txt");
fileKey.transferTo(localFile);
//写入流中,这个主要用于写入其他的地方,例如服务器等,这里不写了
//fileKey.getInputStream()
return new FileInfo(localFile.getAbsolutePath());
}
}
3.测试类
/**
* 测试文件的上传
* @throws Exception
*/
@Test
public void whenUploadSuccess() throws Exception {
String result=mockMvc.perform(MockMvcRequestBuilders.fileUpload("/file")
.file(new MockMultipartFile("fileKey","test.txt","multipart/form-data","hello".getBytes("UTF-8"))))
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn().getResponse().getContentAsString();
System.out.println("result="+result);
}
4.控制台

存储到的现象

三:文件的下载
1.添加io操作的包
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
2.文件下载的程序
package com.cao.web.controller; import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import com.cao.dto.FileInfo; @RestController
@RequestMapping("/file")
public class FileController { String folder="E:\\workspace-sts-3.9.5.RELEASE\\it-security-demo\\src\\main\\java\\com\\cao\\web\\controller"; /**
* 文件的上传控制器
* @param fileKey
* @return
* @throws Exception
*/
@PostMapping
public FileInfo uploadFile(MultipartFile fileKey) throws Exception {
System.out.println("fileName: "+fileKey.getName());
System.out.println("OriginalFilename: "+fileKey.getOriginalFilename());
System.out.println("size: "+fileKey.getSize());
//将要存储在controller的目录下
File localFile=new File(folder,new Date().getTime()+".txt");
fileKey.transferTo(localFile);
//写入流中,这个主要用于写入其他的地方,例如服务器等,这里不写了
//fileKey.getInputStream()
return new FileInfo(localFile.getAbsolutePath());
} /**
* 文件的下载
*/
@GetMapping("/{id}")
public void downFile(@PathVariable String id, HttpServletRequest request,HttpServletResponse response) {
try(
InputStream inputStream=new FileInputStream(new File(folder,id+".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 (Exception e) {
// TODO: handle exception
}
} }
3.在浏览器上访问

009 spring boot中文件的上传与下载的更多相关文章
- iOS开发中文件的上传和下载功能的基本实现-备用
感谢大神分享 这篇文章主要介绍了iOS开发中文件的上传和下载功能的基本实现,并且下载方面讲到了大文件的多线程断点下载,需要的朋友可以参考下 文件的上传 说明:文件上传使用的时POST请求,通常把要上传 ...
- JavaWeb中文件的上传和下载
JavaWeb中文件的上传和下载 转自: JavaWeb学习总结(五十)——文件上传和下载 - 孤傲苍狼 - 博客园https://www.cnblogs.com/xdp-gacl/p/4200090 ...
- Spring MVC 实现文件的上传和下载
前些天一位江苏经贸的学弟跟我留言问了我这样一个问题:“用什么技术来实现一般网页上文件的上传和下载?是框架还是Java中的IO流”.我回复他说:“使用Spring MVC框架可以做到这一点,因为Spri ...
- Java中文件的上传与下载
文件的上传与下载主要用到两种方法: 1.方法一:commons-fileupload.jar commons-io.jar apache的commons-fileupload实现文件上传,下载 [u ...
- Spring MVC 实现文件的上传和下载 (八)
完整的项目案例: springmvc.zip 目录 SpringMVC 中,文件的上传,是通过 MultipartResolver 实现的. 所以,如果要实现文件的上传,只要在 spring-mvc. ...
- Struts中文件的上传与下载
前面学到的用组件去上传 前台: 1.post表单提交 2.表单类型 multipart/form-data 3.intput type=file 后台: Apach提供的FileUpload组件 核心 ...
- docker容器中文件的上传与下载
原文地址:传送门 1.上传文件 docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH [OPTIONS]:保持源目标中的链接,例: docker cp ...
- JSP中文件的上传于下载演示样例
一.文件上传的原理 1.文件上传的前提: a.form表单的method必须是post b.form表单的enctype必须是multipart/form-da ...
- Struts2中文件的上传与下载
文件上传 1.jsp页面 <s:form action="fileAction" namespace="/file" method="POST& ...
随机推荐
- JS访问SpringMVC后台
var actions=ctx.path + "/api/stat/exportScheStatInfo.json"; var form = $("<form> ...
- cdh5.15集群添加spark2.3服务(parcels安装)
背景: 机器系统:redhat7.3:已经配置了http服务 集群在安装的时候没有启动spark服务,因为cdh5.15自带的spark不是2.0,所以直接进行spark2.3的安装 参考文档:htt ...
- Node.js 调存储过程
var spring = require("spring"); //当前登录人ID var account_id = require('nodejava').toJs.parse( ...
- Vux使用经验
Vux使用心得 参考链接 布局 简单平分:水平布局和垂直布局 <template> <divider>Horizontal</divider> <flexbo ...
- vsftpd中的local_umask和anon_umask
umask是在linux中常见的一个东西,它其实是一个掩码.当然,也有umask这样一个命令,它是对用户建立的文件的默认属性的定义.该 定义为: 假设umask为022,则对于一个文件夹的话,它的默认 ...
- jenkins自动构建版本
- OpenCV-Python入门教程3-图像基本操作(访问像素点/ROI/通道分离)
一.获取和修改像素点的值 import cv2img = cv2.imread('lena.jpg') # 100, 90表示行列坐标 px = img[100, 90] print(px) # 获取 ...
- loss函数学习笔记
一直对机器学习里的loss函数不太懂,这里做点笔记. 符号表示的含义,主要根据Andrew Ng的课程来的,\(m\)个样本,第\(i\)个样本为\(\vec x^{(i)}\),对应ground t ...
- C#线性表
线性表是线性结构的抽象 线性结构的特点是结构中的数据元素之间存在一对一的线性关系 一对一的关系指的是数据元素之间的位置关系 (1)除第一个位置的数据元素外,其它数据元素位置的前面都只有一个数据元素 ( ...
- ReSharper 8 & 9
ronle ZoJzmeVBoAv9Sskw76emgksMMFiLn4NM 9: admin@youbaozang.com SpFEMUSrPM0AGupqlNs6J1Ey7HrjpJZy admi ...