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";
    }
``
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号