MultipartFile是SpringMVC提供简化上传操作的工具类。在不使用框架之前,都是使用原生的HttpServletRequest来接收上传的数据,文件是以二进制流传递到后端的,然后需要我们自己转换为File类。使用了MultipartFile工具类之后,我们对文件上传的操作就简便许多了。
MultipartFile方法详解
String getName() 返回参数的名称
String getOriginalFilename(); 获取源文件名称
String getContentType() 返回文件的内容类型
isEmpty() 判断是否为空,或者上传的文件是否有内容
Long getSize() 返回文件大小 以字节为单位
byte[] getBytes() 将文件内容转化成一个byte[] 返回
InputStream getInputStream() throws IOException;返回InputStream读取文件的内容transferTo(File dest) 用来把 MultipartFile 转换换成 File
文件上传代码java后端代码如下,首先取出MulipartFile的源文件名,拼接字符串构成File文件的磁盘路径,然后通过multipartFile的transferTo方法转化成File文件,后将该文件的文件名,文件大小,磁盘存储路径存放到数据库中。至此文件上传基本完成。
@RequestMapping("/test2/imp")
@ResponseBody
public String file(@RequestParam("file") MultipartFile multipartFile) throws Exception {
File file=new File("D:\\test\\"+multipartFile.getOriginalFilename());
if(multipartFile.isEmpty()){
throw new Exception("文件不能为空");
}
String filename = multipartFile.getOriginalFilename();
long size = multipartFile.getSize();
multipartFile.transferTo(file);
String absolutePath = file.getAbsolutePath();
Myfile myfile=new Myfile();
myfile.setName(filename);
myfile.setPath(absolutePath);
myfile.setSize(size);
QueryWrapper<Myfile> queryWrapper=new QueryWrapper<>();
queryWrapper.eq("name",filename);
Myfile myfile1 = myfileMapper.selectOne(queryWrapper);
if(myfile1==null)
myfileMapper.insert(myfile);
return "success";
}
文件下载java后端代码如下,首先根据文件名从数据库中取到文件的磁盘存储路径,然后取到该File文件,设置请求头内容将通过response.getOutputputStream方法将该二进制文件输出到浏览器上,通过浏览器下载。前端代码相对简单省略,可以参考elementplus组件upload实现前端设计。
@RequestMapping("test2/fileload")
public String fileload(@RequestParam("filename")String filename, HttpServletResponse response) throws IOException {
QueryWrapper<Myfile> queryWrapper=new QueryWrapper<>();
queryWrapper.eq("name",filename);
Myfile myfile = myfileMapper.selectOne(queryWrapper);
File file=new File(myfile.getPath());
response.setHeader("Content-Disposition", "attachment; filename=" + filename);
response.setContentType("application/octet-stream");
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write(FileUtil.readBytes(file));
outputStream.close();
return "success";
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/143096.html