最代码-泽正
2017-11-28 13:22:20
spring mvc实现文件上传到虚拟路径
写在开始:项目中需要用到文件的上传与下载,于是做完之后将自己实现的代码写一篇博客。
首先:
在进行文件上传与下载之前我们先在本地电脑搭建一个文件服务器(即虚拟路径)。
第一步:找到tomcat的server.xml--><host>标签,添加如下配置:
<Context docBase="E:\upload\fileUpload" path="/upload" debug="0" reloadable="true"/>
其中doBase代表你本地电脑的真是路径,path代表的的虚拟路径,这个可以随便起名,然后你可以浏览器访问(注意:浏览器访问的是虚拟路径)即:http://localhost:8080/upload即可访问到你的真实路径。
到此一个存放文件的虚拟路径搭建完毕。
第二步:在maven项目的pom.xml中配置文件上传的依赖:
第三步:使用springmvc实现文件的上传与下载,在springmvc.xml中配置:
第四步:在controller中实现逻辑代码:本文只对多文件上传做了实现,多文件上传代码如下:
/** * Upload multiple file using Spring Controller */ @RequestMapping(value = "/uploadMultipleFile", method = RequestMethod.POST, produces = "application/json;charset=utf8") @ResponseBody public Message uploadMultipleFileHandler(@RequestParam("file") MultipartFile[] files) throws IOException { Message msg = new Message(); ArrayList<Integer> arr = new ArrayList<>(); for (int i = 0; i < files.length; i++) { MultipartFile file = files[i]; String fileName=file.getOriginalFilename(); if (!file.isEmpty()) { InputStream in = null; OutputStream out = null; try { String path = "E:/upload/fileUpload/" + file.getOriginalFilename(); File serverFile = new File(path); in = file.getInputStream(); out = new FileOutputStream(serverFile); byte[] b = new byte[1024]; int len = 0; while ((len = in.read(b)) > 0) { out.write(b, 0, len); } out.close(); in.close(); logger.info("Server File Location=" + serverFile.getAbsolutePath()); } catch (Exception e) { arr.add(i); } finally { if (out != null) { out.close(); out = null; } if (in != null) { in.close(); in = null; } } } else { arr.add(i); } } if(arr.size() > 0) { msg.setStatus(Status.ERROR); msg.setError("Files upload fail"); msg.setErrorKys(arr); } else { msg.setStatus(Status.SUCCESS); msg.setStatusMsg("Files upload success"); } return msg; } }
最后文件上传就实现了。
第四步实现文件下载:
至此,整个文件上传和文件下载就实现完了。
写在最后:勤能补拙,厚积薄发。
相关源码文件下载:spring mvc+bootstrap实现文件的上传实例
评论
最近浏览
601601lmy LV5
2023年7月19日
zxysss LV3
2022年1月6日
zhengchenghui LV5
2021年7月19日
malylian
2021年6月21日
暂无贡献等级
jianghuni
2021年6月2日
暂无贡献等级
_℃
2021年3月31日
暂无贡献等级
最代码-宋家辉 LV61
2021年2月20日
xiaochaoge
2020年11月3日
暂无贡献等级
18629195654 LV3
2020年8月18日
lwp011 LV27
2020年7月7日