SpringMVC的文件上传

一、SpringMVC实现文件上传

    文件上传源码想下载的:https://github.com/Cqypyglz/SpringMVCFileUpload

       1.文件上传的前提

           1) form 表单的 enctype 取值必须是:multipart/form-data 

           2)method 属性取值必须是 Post

           3)提供一个文件选择域<input type=”file” /> 

        注意:当 form 表单的 enctype 取值不是默认值后,request.getParameter()将失效。 

        2.实现步骤

           1)SpringMVC框架提供了MultipartFile对象,该对象表示上传的文件,要求变量名称必须和表单file标签的 name属性名称相同。 

           2)配置文件解析器

           

 <!--配置文件解析器-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
     <property name="maxUploadSize" value="1000000"></property>
    </bean>

           3)Controller中的代码如下:

              

  @RequestMapping("/fileUpload2")
    public String fileUpload2(HttpServletRequest request, MultipartFile upload) throws Exception {
        System.out.println("文件上传");
        //使用fileupload组件完成上传文件
        //上传的位置
        String path = request.getSession().getServletContext().getRealPath("upload/");
        //判断,该路径是否存在
        File file =new File(path);
        if(!file.exists()){
            file.mkdirs();
        }
        //上传文件项
        //获取上传文件的名称
        String filename = upload.getOriginalFilename();
        //把文件名称设置唯一值
        String uuid = UUID.randomUUID().toString().replace("-", "");
        filename=uuid+"-"+filename;
        //完成上传文件
        upload.transferTo(new File(path,filename));
         return "success";
    }

二、 SpringMVC跨服务器方式文件上传 

          1.导入依赖 

<dependency>
      <groupId>com.sun.jersey</groupId>
      <artifactId>jersey-core</artifactId>
      <version>1.18.1</version>
    </dependency>
    <dependency>
      <groupId>com.sun.jersey</groupId>
      <artifactId>jersey-client</artifactId>
      <version>1.18.1</version>
    </dependency>

         2.Controller的代码实现

             

 @RequestMapping("/fileUpload3")
    public String fileUpload3(MultipartFile upload) throws Exception {
        System.out.println("跨服务器文件上传");
        //定义上传文件服务器路径
        String path="http://localhost:9090/uploads/";
        //上传文件项
        //获取上传文件的名称
        String filename = upload.getOriginalFilename();
        //把文件名称设置唯一值
        String uuid = UUID.randomUUID().toString().replace("-", "");
        filename=uuid+"-"+filename;
        //完成跨服务器上传文件
        //创建客户端对象
        Client client = Client.create();
        //和图片服务器进行连接
        WebResource webResource = client.resource(path + filename);
        //上传文件
        webResource.put(upload.getBytes());

        return "success";
    }

            

原文地址:https://www.cnblogs.com/cqyp/p/12526820.html