注:请求方式必须是post, 通过springmvc提供的MultipartFile类接收上传的文件对应前端上传格式multipart,参数名字必须和前端传来的name一样这里用的名字是file
@RestController
@Slf4j
@RequestMapping("/upload")
public class CommonController {
//上传文件接口
@PostMapping
public Result<String> upload(MultipartFile file) throws IOException {
//获取原文件名
String originalFilename = file.getOriginalFilename();
//提取文件后缀
String substring = originalFilename.substring(originalFilename.lastIndexOf("."));
//判断目录是否存在如果不存在先创建目录
File dir = new File("E:\\编程项目\\resource\\123");
if(!dir.exists()){
dir.mkdirs();
}
//使用uuid生成文件名并转存文件,fMultipartFile接收的文件默认只是临时存在硬盘,执行完毕就会删掉文件所以要转存
String name = UUID.randomUUID().toString()+substring;
file.transferTo(new File("E:\\编程项目\\resource\\123\\"+name));
return Result.success("转存成功");
}
}
/**
* 下载接口
* @param name
* @param response
*/
@GetMapping("/download")
public void download(String name, HttpServletResponse response) throws Exception {
//输入流
FileInputStream fileInputStream = new FileInputStream(new File(path+name));
//输出流,直接写给前端
ServletOutputStream outputStream = response.getOutputStream();
//设置响应文件格式
response.setContentType("image/jpeg");
int len =0;
byte [] bytes=new byte[1024];
//读完了len会是-1,不然就是读了多少数量
while ((len=fileInputStream.read(bytes))!=-1){
outputStream.write(bytes,0,len);
outputStream.flush();
}
}