| import org.apache.commons.io.IOUtils; | |
| import org.apache.commons.lang.StringUtils; | |
| import org.springframework.web.bind.annotation.GetMapping; | |
| 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 javax.servlet.http.HttpServletRequest; | |
| import javax.servlet.http.HttpServletResponse; | |
| import java.io.File; | |
| import java.io.FileInputStream; | |
| import java.io.InputStream; | |
| import java.io.OutputStream; | |
| @RestController | |
| @RequestMapping("/file") | |
| public class FileController { | |
| /** | |
| * 参数名file与ControllerTest.whenUploadSuccess里new MockMultipartFile的第一个参数名要相同 | |
| */ | |
| @PostMapping("/upload") | |
| public FileInfo update(MultipartFile file) throws Exception { | |
| System.out.println(file.getName()); | |
| System.out.println(file.getOriginalFilename()); | |
| System.out.println(file.getContentType()); | |
| System.out.println(file.getSize()); | |
| String path = "xxx"; | |
| String extension = StringUtils.substringAfterLast(file.getOriginalFilename(), "."); | |
| File localFile = new File(path, System.currentTimeMillis() + "." + extension); | |
| file.transferTo(localFile); | |
| return new FileInfo(localFile.getAbsolutePath()); | |
| } | |
| @GetMapping("/download") | |
| public void download(HttpServletRequest request, HttpServletResponse response) throws Exception { | |
| //从request中获取下载文件路径 | |
| String filePath = request.getParameter("xxxx"); | |
| //try ()里定义的InputStream和OutputStream会被自动释放,不需要在finally里手动释放,JDK 1.7后出现的此语法 | |
| try (InputStream inputStream = new FileInputStream(filePath); | |
| OutputStream outputStream = response.getOutputStream()) { | |
| response.setContentType("application/x-download"); | |
| //attachment;filename=指定默认下载文件名 | |
| response.addHeader("Content-Disposition", "attachment;filename=download.txt"); | |
| IOUtils.copy(inputStream, outputStream); | |
| outputStream.flush(); | |
| } | |
| } | |
| } |
上传下载 demo
最新推荐文章于 2024-03-17 00:29:18 发布
本文介绍了一个使用Spring Boot实现的文件上传和下载功能的简单案例。该案例通过Controller处理上传请求,将文件保存到服务器,并提供下载接口。文章展示了如何读取上传文件的基本信息,如文件名、类型和大小,并将其保存到指定位置。此外,还提供了文件下载的方法,允许用户通过HTTP请求下载文件。
484

被折叠的 条评论
为什么被折叠?



