spring mvc上传带参数的文件

本文详细介绍了如何在Spring MVC中实现带参数的文件上传,包括编写form表单、Spring MVC控制器的编写方式(使用bean和直接使用参数)、spring-web.xml和pox.xml的配置,以及可能遇到的问题及解决方案,如MultipartResolver未配置导致的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值