@PostMapping("/file")
public R upa2(@RequestParam("file") MultipartFile file) {
String originalFilename = file.getOriginalFilename();//获取文件名
String property = System.getProperty("user.dir");
String s=property+"\\src\\main\\resources\\file\\";
String d = originalFilename.substring(originalFilename.indexOf("."));
long l = System.currentTimeMillis();
File file1 = new File(s + l + d);//加载缓存
if (!file1.getParentFile().exists()) {
file1.getParentFile().mkdirs();
}
try {
file.transferTo(file1);
} catch (IOException e) {
return R.fail("失败");
}
return R.data(s + l + d);
}
@GetMapping("/{flag}")
public void download(@PathVariable String flag, HttpServletRequest request, HttpServletResponse response) throws Exception{
String property = System.getProperty("user.dir");
String path = property+"\\src\\main\\resources\\file\\";
String fileName = flag;
//1、设置response 响应头
response.reset(); //设置页面不缓存,清空buffer
response.setCharacterEncoding("UTF-8"); //字符编码
response.setContentType("multipart/form-data"); //二进制传输数据
//设置响应头
response.setHeader("Content-Disposition",
"attachment;fileName="+URLEncoder.encode(fileName, "UTF-8"));
File file = new File(path,fileName);
//2、 读取文件--输入流
InputStream input=new FileInputStream(file);
//3、 写出文件--输出流
OutputStream out = response.getOutputStream();
byte[] buff =new byte[1024];
int index=0;
//4、执行 写出操作
while((index= input.read(buff))!= -1){
out.write(buff, 0, index);
out.flush();
}
out.close();
input.close();
}
Java文件上传下载
于 2022-08-30 16:27:21 首次发布