spring mvc上传带参数的文件

来源:互联网 发布:两个域名指向一个网站 编辑:程序博客网 时间:2024/05/18 03:11

1.编写form表单
2.springmvc编写
3.spring-web.xml配置
4.pox.xml
5.会出现的问题:

1.编写form表单

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>testupload</title></head><body>    <form action="http://localhost:8080/Blog/admin/uploading" modelAttribute="multiFileUploadForm" method="post"  enctype="multipart/form-data">        <input type="text" name="title"/><br/>        <input type="text" name="tag"/><br/>        <input type="text" name="summary"/><br/>        <input type="text" name="classification"/><br/>        <input type="file" name="multiUploadFile"/><br/>        <input type="submit" value="submit">    </form></body></html>

2.springmvc编写

A.封装到bean中

先编写一个bean类:

package com.imooc.dto;import org.springframework.web.multipart.MultipartFile;/** *处理文章上传,Markdown解析为html */public class MultiFileUploadForm {    private String title;    private String tag;    private String summary;    private String classification;    private MultipartFile multiUploadFile;    public MultiFileUploadForm(){    }    public String getTitle() {        return title;    }    public void setTitle(String title) {        this.title = title;    }    public String getTag() {        return tag;    }    public void setTag(String tag) {        this.tag = tag;    }    public String getSummary() {        return summary;    }    public void setSummary(String summary) {        this.summary = summary;    }    public String getClassification() {        return classification;    }    public void setClassification(String classification) {        this.classification = classification;    }    public MultipartFile getMultiUploadFile() {        return multiUploadFile;    }    public void setMultiUploadFile(MultipartFile multiUploadFile) {        this.multiUploadFile = multiUploadFile;    }}

springMVC编写:

/**     * 上传文章,将markdown解析成html     */    @RequestMapping(value = "/uploading",                    method = RequestMethod.POST)    @ResponseBody    public Result<String> uploadFile(@ModelAttribute("multiFileUploadForm") MultiFileUploadForm multiFileUploadForm){    System.out.println(multiFileUploadForm.getTag());        System.out.println(multiFileUploadForm.getTitle());        MultipartFile multiUploadFile = multiFileUploadForm.getMultiUploadFile();        if(multiUploadFile != null&&multiUploadFile.getSize() > 0){    try {                    System.out.println("fileName:"+multiUploadFile.getOriginalFilename());                    multiUploadFile.transferTo(new File("H:/uploading/"+multiUploadFile.getOriginalFilename()));    } catch (IllegalStateException e) {        // TODO Auto-generated catch block        e.printStackTrace();    } catch (IOException e) {        // TODO Auto-generated catch block        e.printStackTrace();    }    }   }

B.不使用bean直接使用参数

/**     * 上传文章,将markdown解析成html     */    @RequestMapping(value = "/uploading",                    method = RequestMethod.POST)    @ResponseBody    public Result<String> uploadFile(MultipartFile multiUploadFile, HttpServletRequest request) {    String title = request.getParameter("title");    String tag = request.getParameter("tag");    System.out.println("tag:"+title);    System.out.println("title:"+tag);                           System.out.println("size:"+multiUploadFile.getSize());    if(multiUploadFile != null&&multiUploadFile.getSize() > 0){            try {                System.out.println("fileName:"+multiUploadFile.getOriginalFilename());                multiUploadFile.transferTo(new File("H:/uploading/"+multiUploadFile.getOriginalFilename()));            } catch (IllegalStateException e) {                // TODO Auto-generated catch block                e.printStackTrace();            } catch (IOException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }}

3.spring-web.xml配置

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">        <property name="defaultEncoding" value="utf-8"></property>        <property name="maxUploadSize" value="104857600"></property>        <property name="maxInMemorySize" value="40960"></property>        <property name="resolveLazily" value="true"></property>    </bean>

4.pox.xml

<dependency>            <groupId>commons-fileupload</groupId>            <artifactId>commons-fileupload</artifactId>            <version>1.3</version>        </dependency>

5.会出现的问题:

springMVC使用multipartFile上传文件出错:MultipartHttpServletRequest: is a MultipartResolver configured?

这是因为的你的4.spring-web.xml没有配置,应该严格按照4.配置