项目中经常会用到上传下载文件,在这里进行了简单的整理为大家分享出来。如果有什么问题可以随时交流。
1.文件的上传:
//获取接收文件的对象
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
//获取上传的文件(存放在内存中)
MultipartFile uploadPdf = multipartRequest.getFile("file");
//进行文件的保存
if(uploadPdf != null) {
//获取文件后缀名
String suffix = uploadPdf.getOriginalFilename().substring(uploadPdf.getOriginalFilename().lastIndexOf("."));
//需要保存的文件对象
File targetFile = new File("存放文件的路径", "文件名" + suffix);
//判断该文件对象在磁盘上是否存在
if(!targetFile.exists()){
//磁盘上不存在,则进行文件的创建
targetFile.mkdirs();
}
//文件从内存中保存到磁盘上(该方法是springmvc封装的方法)
uploadPdf.transferTo(targetFile);
}
2.文件的下载:
//获取输出流
OutputStream stream = response.getOutputStream();
try {
//清空下载文件的空白行(空白行是因为有的前端代码编译后产生的)
response.reset();
String fileName = "从数据库字段中获取到文件名字";
//设置响应头,把文件名字设置好
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
//解决编码问题
response.setContentType("application/octet-stream; charset=utf-8");
//创建存储的文件对象(文件存储的路径和文件名字)
File targetFile = new File("文件下载的路径", fileName);
//输出流开始写出文件(FileUtils是Apache下的工具类可以直接调用)
stream.write(FileUtils.readFileToByteArray(targetFile));
//刷新流
stream.flush();
} finally {
//关闭流
stream.close();
}