import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
import java.util.UUID;
@RestController
@RequestMapping("/file/")
public class FileController {
/*
* 单文件上传
* */
@RequestMapping("upload")
// @RequestParam("file")
public String upload(MultipartFile file){
//获取原始名字
String fileName = file.getOriginalFilename();
//获取后缀名
String suffixName = fileName.substring(fileName.lastIndexOf("."));
//文件保存路径
String filePath = "d://file//";
//文件重命名,防止重复
fileName = filePath + UUID.randomUUID() + fileName;
//文件对象
File dest = new File(fileName);
//判断路径是否存在,如果不存在则创建
if (!dest.getParentFile().exists()){
dest.getParentFile().mkdir();
}try {
//保存到服务器
file.transferTo(dest);
return "上传成功";
} catch (IOException e) {
e.printStackTrace();
}
return "上传失败";
}
/*
* 多文件上传
*
* */
@PostMapping("moreupload")
@ResponseBody
public String handleFileUpload(HttpServletRequest request){
List<MultipartFile> fileList = ((MultipartHttpServletRequest) request)
.getFiles("file");
MultipartFile file = null;
for (int i = 0;i<fileList.size();i++){
file = fileList.get(i);
if (!file.isEmpty()){
try {
//获取原始名字
String fileName = file.getOriginalFilename();
//文件保存路径
String filePath = "d://file//";
//文件重命名,防止重复
fileName = filePath +UUID.randomUUID() +fileName;
//文件对象
File dest = new File(fileName);
//保存到服务器
file.transferTo(dest);
}catch (Exception e){
e.printStackTrace();
return "文件上传失败";
}
}else {
return "上传失败";
}
}
return "上传成功";
}
/*
* 文件下载
* */
@RequestMapping("download")
public void download(HttpServletResponse response)throws Exception{
//文件地址,真实环境时存放在数据库中
String filename = "a.txt";
String filePath = "d://file//";
File file = new File(filePath+ "/"+filename);
//创建输入对象
FileInputStream fileInputStream = new FileInputStream(file);
//设置文件格式
response.setHeader("Content-Disposition","attachment;fileName" +filename);
//创建输出对象
OutputStream os = response.getOutputStream();
//常规操作
byte[] buf = new byte[1024];
int len = 0;
while ((len = fileInputStream.read(buf))!=-1){
os.write(buf,0,len);
}
fileInputStream.close();
}
}
Spring Boot简单的文件上传下载
最新推荐文章于 2022-11-25 13:47:12 发布