多学习。

SpringMVC实现文件上传

文件上传的必要前提

文件上传原理


第三方组件实现文件上传

传统文件上传方式

1.导入依赖

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

    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.6</version>
    </dependency>

2.前端代码

    <form action="user/fileUpLoad1" method="post" enctype="multipart/form-data">
        选择文件:<input type="file" value="选择文件" name="upload"><br>
        <input type="submit" value="上传">
    </form>

3.后端代码

    @RequestMapping("/fileUpLoad1")
    public String fileUpLoad1(HttpServletRequest request) throws Exception{
        System.out.println("文件上传");

        //使用fileupload组件完成文件上传
        String path = request.getSession().getServletContext().getRealPath("/uploads/");

        //判断该路径是否存在
        File file = new File(path);
        if(!file.exists()){
            file.mkdirs();
        }

        //解析request文件,获取上传文件项
        DiskFileItemFactory factory = new DiskFileItemFactory(); //磁盘文件工厂对象:用于创建磁盘文件对象
        ServletFileUpload upload = new ServletFileUpload(factory); //利用工厂,加载上传文件,创建磁盘文件对象

        //解析request
        List<FileItem> fileItems = upload.parseRequest(request);
        for(FileItem item : fileItems){
            //拿到每一个文件对象

            //进行判断,当前item是否为上传文件项,也可能是上传表单项(如username=xx)
            if(item.isFormField()){ //普通表单项

            }else{ //上传文件项
                String fileName = item.getName();

                //把文件名称设置为唯一值
                fileName = UUID.randomUUID().toString().replace("-","")+"_"+fileName;

                item.write(new File(path,fileName));
                System.out.println(path+fileName);
                //删除临时文件
                item.delete();
            }
        }

        return "success";
    }

SpringMVC上传文件

1.SpringMVC中配置文件解析器

    <!--配置文件解析器对象,id不能更改必须为此-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="10485760"></property> <!--最大上传文件大小,单位:字节-->
    </bean>

2.后端代码

    @RequestMapping("/fileUpLoad2")
    public String fileUpLoad2(HttpServletRequest request,MultipartFile upload) throws Exception{
        System.out.println("SpringMVC上传");
        File file = new File(request.getSession().getServletContext().getRealPath("/uploads/"));
        if(!file.exists()) file.mkdirs();
        System.out.println(file.getPath());

        //获取文件名称
        String fileName = upload.getOriginalFilename();
        //变为唯一值
        fileName = UUID.randomUUID().toString().replace("-","")+"_"+fileName;

        //上传文件
        upload.transferTo(new File(file,fileName));

        return "success";
    }
``
posted @   czyaaa  阅读(513)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示