springMVC上传文件到服务器,数据库中存储文件路径

springMVC上传文件到服务器,数据库中存储文件路径

1.封装了文件上传执行过程,其中参数验证、异常处理等需要自己处理。

 /**
    * springMVC 处理文件上传
    * @param partFile 上传的文件 
    * @param rootPath 文件存放的目录 例如:/mnt/file/ 
    * @return 传入的文件参数若为空,或者传入的文件名称为空时返回值为null,否则返回文件在数据库中存储的相对路径+文件名称
    *         返回值(存储的相对路径+文件名称)=当前年月+随机数
    *         文件存放的绝对路径+文件名称=rootPath+当前年月+随机数
    *         例如:上传的文件类型为jpg rootPath:/mnt/file/ 当前年月为 :201611 生成随机数为:7a932fe2-61a1-4fd8-ad56-385b289c9cd3
    *               返回值(存储的相对路径+文件名称)=201611/7a932fe2-61a1-4fd8-ad56-385b289c9cd3.jpg
    *               文件存放的绝对路径+文件名称=/mnt/file/201611/7a932fe2-61a1-4fd8-ad56-385b289c9cd3.jpg
    * @throws IOException 
    * @throws IllegalStateException 
    */
   public String uploadFile(MultipartFile partFile,String rootPath) throws IllegalStateException, IOException {
	   
	   if(partFile!=null&&partFile.getOriginalFilename()!=null&&partFile.getOriginalFilename().length()>0){
		   Calendar cal = Calendar.getInstance();
		   int month = cal.get(Calendar.MONTH) + 1;
		   int year = cal.get(Calendar.YEAR);
		   String filePath=rootPath+year+month+"/";
		   File dir=new File(filePath);
			if(!dir.isDirectory())
				dir.mkdir();
		   
		   String fileOriginalName=partFile.getOriginalFilename();
		   String newFileName=UUID.randomUUID()+fileOriginalName.substring(fileOriginalName.lastIndexOf("."));
		   File file=new File(filePath+newFileName);
		   //文件写入磁盘
		   partFile.transferTo(file);
		   //返回存储的相对路径+文件名称
		   return ""+year+month+"/"+newFileName;
	   }
	   else
		   return null;
   }

2.springMVC.xml中的配置

 <!-- 文件上传 -->
	<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!-- 设置上传文件的最大尺寸为5MB -->
		<property name="maxUploadSize">
			<value>5242880</value>
		</property>
	</bean>
<!-- 配置静态资源 -->
       <mvc:resources location="file:/mnt/file/" mapping="/file/**"/>

如果出现错误,可能是没有配置 <mvc:annotation-driven /> 的原因。

3.界面实例

	<tr>
		<td>文件</td>
		<td><c:if test="${file !=null}">
				<img src="${pageContext.request.contextPath }/file/${file}"
					width=100 height=100 />
				<br />
			</c:if> <inputtype ="file" name="partFile" /></td>
	</tr>

1条评论

按时 says: 回复

飒飒

发表评论

电子邮件地址不会被公开。 必填项已用*标注

昵称 *