今天刚好看到上传附件的代码,综合以前看的代码,记录一点,也不算是收获,算是备忘吧。
参考文章链接:
首先,在web.xml中,
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/classes/mvc-config.xml </param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet>
对应的mvc-config.xml中,进行配置。
在beans中,增加对文件上传的支持。
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- one of the properties available; the maximum file size in bytes --> <property name="defaultEncoding" value="UTF-8"/> <property name="maxUploadSize" value="209715200"/> <!-- 20M --> <!-- 要在WebContent下建立一个upload文件夹 <property name="uploadTempDir" value="upload"/> --> </bean>
在form表单中,只要是有, 标签用的是springmvc的form.
<input type="file" name="txtFile" class="span6" id="txtFile" />就会有一个上传文件按钮。
这里的type,必须是file,id自己定义。
但是,id的定义,需要与后台的参数相对应。
如果后台controller方法中,只需要接收,上传文件这一个参数,写法如下(下面代码参考SpringMVC 理论与实用技术(二)文件上传):.
@RequestMapping("/upload") public String upload(@RequestParam("txtFile") CommonsMultipartFile file ,HttpServletRequest request) throws IOException{</span> return "success"; }如果有其他参数,需要一同传入到controller中,写法如下:
@RequestMapping(value = "/form/upload") public ModelAndView edit(PProductAccessoryForm form) throws Exception { String forwardString = "product/accessory/upload"; Map<String, Object> model = new HashMap<String, Object>(); model.put("form", form); return new ModelAndView(forwardString, model); }
其中,参数:PProductAccessoryForm,是另一个参数类,里面封装所有的需要传入的参数,其中包括上传的文件。
public class PProductAccessoryForm extends DataTableForm<PProductAccessory> { private String name; private CommonsMultipartFile txtFile = null; public String getName() { return name; } public void setName(String name) { this.name = name; } public CommonsMultipartFile getTxtFile() { return txtFile; } public void setTxtFile(CommonsMultipartFile txtFile) { this.txtFile = txtFile; } }
还有一种,没有用,也没有验证过的方式,(下面代码参考SpringMVC 理论与实用技术(二)文件上传):
@RequestMapping("/upload2") public void upload2(HttpServletRequest request,HttpServletResponse response) throws IllegalStateException, IOException { CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver(); if (multipartResolver.isMultipart(request)) { MultipartHttpServletRequest multipartRequest=(MultipartHttpServletRequest)request; Iterator<String> iter=multipartRequest.getFileNames(); while(iter.hasNext()) { MultipartFile file=multipartRequest.getFile((String)iter.next()); if (file!=null) { String filename="demo"+file.getOriginalFilename(); String path="D:/"+filename; File localfile=new File(path); file.transferTo(localfile); } } } }
第三种,有机会再进行验证,成功后补充博客。
这就是springMVC中,上传文件的操作了。