- 利用HttpServletResponse进行文件的上传与下载
- springboot项目
- 文件上传必须使用绝对路径,不然会报错
package com.info.fileupanddown.utils;
import org.apache.commons.io.IOUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
//文件的上传与下载
public class FileUtils {
@RequestMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file, HttpServletResponse response) {
try {
if (file.isEmpty()) {
return "文件为空";
}
String fileName = file.getOriginalFilename();
String testName = file.getName();
String suffixName = fileName.substring(fileName.lastIndexOf("."));
//存储路径
String filePath = "F:/1/";
String path = filePath+fileName;
File newFile = new File(path);
// 检测是否存在目录
if (!newFile.getParentFile().exists()) {
newFile.getParentFile().mkdirs();// 新建文件夹
}
file.transferTo(newFile);// 文件写入
return "上传成功";
} catch (IOException e) {
e.printStackTrace();
}
return "文件上传失败";
}
@RequestMapping("/download")
public void download2(HttpServletResponse response) throws IOException {
//设置content-disposition响应头控制浏览器以下载的形式打开文件
response.setHeader("content-disposition", "attachment;filename=dog.jpg");
response.setContentType("application/octet-stream; charset=UTF-8");
InputStream in = new FileInputStream("F:\\1\\dog.jpg");
IOUtils.write(IOUtils.toByteArray(in),response.getOutputStream());
}
}
需要的依赖
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
代码里的文件路径需要改成自己的路径
html的代码如下:
上传代码
<form action="upload" method="POST" enctype="multipart/form-data">
文件:<input type="file" name="file"/>
<input type="submit"/>
</form>
下载代码
<a href="/download">download</a>