利用MultipartFile实现文件上传
(2011-09-20 11:19:32)
标签:
杂谈 |
分类: 混口饭吃 |
使用spring的MultipartFile实现文件上传,感觉挺简单,在这里和大家分享一下.
1.FileUploadBean.java
java 代码
- package
chb.demo.web; - import
org.springframework.web.multipart.MultipartFile; - public
class FileUploadBean { private MultipartFile file; public void setFile(MultipartFile file) { this.file = file; } public MultipartFile getFile() { return file; } - }
2.FileUploadController.java
java 代码
- package
chb.demo.web; - import
java.io.FileOutputStream; - import
java.io.IOException; - import
java.io.InputStream; - import
javax.servlet.http.HttpServletRequest; - import
javax.servlet.http.HttpServletResponse; - import
org.springframework.validation.BindException; - import
org.springframework.web.multipart.MultipartFile; - import
org.springframework.web.servlet.ModelAndView; - import
org.springframework.web.servlet.mvc.SimpleFormController; - public
class FileUploadController extendsSimpleFormController { protected ModelAndView onSubmit( HttpServletRequest request, HttpServletResponse response, Object command, BindException errors){ try { // cast the bean FileUploadBean bean = (FileUploadBean) command; // let's see if there's content there MultipartFile file = bean.getFile(); if (file null)== { throw new Exception( "上传失败:文件为�空");} if(file.getSize()>10000000) { throw new Exception( "上传失败:文件大小不能超过10M");} //得到文件�名 String filename=file.getOriginalFilename(); if(file.getSize()>0){ try { "D:/",filename); SaveFileFromInputStream(file.getInputStream(), catch } (IOException e) { System.out.println(e.getMessage()); return null; } } else{ throw new Exception( "上传失败:上传文件不能为�空");} // well, let's do nothing with the bean for now and return: try { return super.onSubmit(request, response, command, errors); catch } (Exception e) { System.out.println(e.getMessage()); return null; } } catch(Exception ex) { System.out.println(ex.getMessage()); return null; } } public void SaveFileFromInputStream(InputStream throwsstream,String path,String filename) IOException { new FileOutputStream fs= FileOutputStream( "/"+path + filename); byte[] buffer new= byte[1024*1024]; int bytesum 0;= int byteread 0;= while ((byteread=stream.read(buffer))!=- 1){ bytesum+=byteread; 0,byteread); fs.write(buffer, fs.flush(); } fs.close(); stream.close(); } - }
二.配置文件中如下配置:
1.web.xml,利用spring mvc模式,大家应该都很熟悉了
xml 代码
- <servlet>
<servlet-name>chb</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> - </servlet>
- <servlet-mapping>
<servlet-name>chb</servlet-name> <url-pattern>*.do</url-pattern> - </servlet-mapping>
2.chb-servlet.xml,这里要配置映射,并可以设定最大可上传文件的大小
xml 代码
- <?xml
version="1.0" encoding="UTF-8"?> - <!DOCTYPE
beans >PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" - <beans>
<!-- Multi-Action 用来标识method的变量名定义--> <bean id="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResol ver" ><property name="paramName"> <value>action</value> </property> <property name="defaultMethodName"> <value>index</value> </property> </bean> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver " ><!-- one of the properties available; the maximum file size in bytes --> <property name="maxUploadSize" value="10000000"/> </bean> <bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/upload.do">fileUploadController</prop> </props> </property> </bean> <bean id="fileUploadController" class="chb.demo.web.FileUploadController"> <property name="commandClass" value="chb.demo.web.FileUploadBean"/> <!-- 上传失败时跳转页面 --> <property name="formView" value="/user/err.jsp"/> <!-- 上传成功时跳转页面 --> <property name="successView" value="/user/confirmation.jsp"/> </bean> - </beans>
三.设定jsp页面
xml 代码
<form id="form1" method="post" action="upload.do" enctype="multipart/form-data"> <tr> <td width="25%" align="right">上传文件:</td> <td><input id="file" type="file" NAME="file" style="width:300px;"></td> </tr> <tr align="center" valign="middle"> <td height="60" colspan="2"><input type="submit" ID="BtnOK" value="确认上传"></td> </tr> - </form>
后一篇:用jquery实现显示隐藏div