SpringMVC---文件上传

本文详细介绍如何在SpringMVC框架下实现文件上传功能,包括所需依赖包、前端表单设置、配置文件解析器及接收保存文件的具体步骤。

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

一.步骤总结

1.导包
2.准备前端表单
3.在web.xml中配置文件解析器
4.准备接收文件和保存文件的方法

二.步骤解析:

1.导包

除了Spring和SpringMVC中的需要的包外,还需要commons-fileupload.jar以及commons-io.jar包
在这里插入图片描述

2.准备前端表单

前端表单要求:为了能上传文件,必须将表单的method设置为POST,并将enctype设置为multipart/form-data。只有在这样的情况下,浏览器才会把用户选择的文件以二进制数据发送给服务器;
注意:
1)表单必须是post方法提交
2)表单域中的type必须是file
3)enctype的值要是multipart/form-data

<form action="${pageContext.request.contextPath}/upload.do" method="post" enctype="multipart/form-data">
    name:<input type="text" name="name"><br>
    头像:<input type="file" name="img"><br>
    <input type="submit" value="提交">

</form>

3.在springmvx.xml中配置文件解析器

注意:
id必须是multipartResolver,因为系统要根据这个是去创建文件解析器
文件解析器不像其他的比如处理器,适配器系统会自动配,文件上传解析器不是必要的,只有在文件上传的才用到,所以开发者在使用时候自己配置出来

  <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
       <!--配置文件大小-->
        <property name="maxUploadSize" value="#{1024*1024*1}"/><!--1-->
    </bean>

4.准备接收文件和保存文件的方法

1)文件的接收

方法参数类型使用MultipartFile,参数名称同表单中的name值一致

  public String upload(MultipartFile img, String name, Model m)
2)文件的保存
步骤:

a.用UUID或者时间戳生成文件的名称(为的是防止多名用户上传同名的文件,导致文件覆盖丢失的问题)
b.用工具类生成文件的后缀名
c.拼接文件的名称
d.保存上传的文件

//将上传的文件保存到服务器电脑的指定磁盘即可
        File file=new File("c:/upload");
        if(!file.exists()){
            file.mkdir();
        }
        //文件的名称用uuid生成
        String fileName = UUID.randomUUID().toString().replaceAll("-", "");
          //或者用时间戳
       // long time = new Date().getTime();
        //文件的后缀名用工具类
        String extension = FilenameUtils.getExtension(img.getOriginalFilename());
        //生成新的文件名称
        String newFileName=fileName+"."+extension;
        File dest=new File(file,newFileName);

        //保存上传的文件
        try {
            img.transferTo(dest);
        } catch (Exception e) {
            e.printStackTrace();
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值