springMVC上传附件

今天刚好看到上传附件的代码,综合以前看的代码,记录一点,也不算是收获,算是备忘吧。


参考文章链接:

SpringMVC 理论与实用技术(二)文件上传

首先,在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中,上传文件的操作了。




上一篇:从编译原理看一个解释器的实现


下一篇:理解思科IPS系统的traffic flow notifications