微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SpringMVC实现文件上传

一、文件上传的原理:

二、实现:

2.1导入依赖:增加commons-fileupload

<!--文件上传-->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.4</version>
</dependency>

 2.2创建页面,在页面上提供表单:要符合文件上传的三要素

如果要实现文件上传
客户端要满足一些条件:三要素
    1. 表单提交方式是POST
    2. 表单里要有 input type="file"
    3. 表单form标签上要加 enctype="multipart/form-data"
        如果不设置这个属性值,表单只会提交文件名称,而不会上传文件数据

 2.3 接收文件

@Controller
@RequestMapping("/file")
public class Demo04FileController {

    /**
     * 要接收客户端上传文件,要求:
     *  1. 方法参数名称  和  客户端提交的表单参数名称 要相同
     *  2. 接收文件数据,参数类型是multipartfile
     *  3. 在xml里@R_404_5679@解析器:CommonsMultipartResolver,把这个类注册bean对象放到IoC容器里
     */
    @RequestMapping("/upload1")
    public String upload1(String nickname, multipartfile avatar) throws IOException {
        System.out.println(nickname);

        //1. 文件重命名
        //1.1 获取文件的原始名称   aaa.txt
        String originalFilename = avatar.getoriginalFilename();
        //1.2 截取得到文件的后缀名  .txt
        String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
        //1.3 生成一个文件名称文件名称不能重复。使用uuid(生成随机字符串的算法,生成32位长的随机字符串,每个字符是16进制的,几乎是永不重复的)
        String filename = UUID.randomUUID().toString() + suffix;


        //2. 把文件数据存储到磁盘上
        avatar.transferTo(new File("E:\\" + filename));

        return "success";
    }

 2.4@R_404_5679@解析器

<!-- @R_404_5679@解析器。id值必须是multipartResolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="defaultEncoding" value="utf-8"/>
    <!--一次请求上传文件的最大尺寸,单位字节。-1表示不限制大小-->
    <property name="maxUploadSize" value="-1"/>
    <!--上传的每个文件的最大尺寸,单位字节。-1表示不限制-->
    <property name="maxUploadSizePerFile" value="-1"/>
</bean>

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐