SpringMVC_6_文件上传

1.文件上传的必要前提

 

1)form表单的enctype取值必须是多段

2)method必须是post

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

 

2.SpringMVC上传文件

原理图:

 

 

 流程:

S1 在springmvc.xml中开启配置文件解析器:

<!--配置文件解析器-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!--<property name="maxInMemorySize" value="1000000000"/>&lt;!&ndash;以字节为单位&ndash;&gt;
        <property name="maxUploadSize" value="1024"/>-->
    </bean>

 

S2 在.jsp文件中新建一个表单项:

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

 

S3 编写处理器:

    /**
     * SpringMVC上传文件,MultipartFile参数名一定要与form表单中input的name相同
     * @return
     * @throws Exception
     */
    @RequestMapping("/fileUpload2")
    public String fileUpload2(HttpServletRequest request, MultipartFile upload) throws Exception {
        System.out.println("SpringMVC文件上传");
        String path = "G:"+ File.separator+"电脑主题"+File.separator;
        //获得上传文件的名称
        System.out.println(upload);
        String originalFilename = upload.getOriginalFilename();
        System.out.println(originalFilename);
        //完成文件上传
        upload.transferTo(new File(path,originalFilename));
        return "success";
    }

 

 

 

 3.SpringMVC跨服务器方式的文件上传

1)分服务器的目的

在实际开发中会有很多处理不同功能的服务器。例如:

应用服务器:负责部署应用

数据库服务器:负责运行数据库

缓存和消息服务器:负责处理大并发访问的缓存和消息

文件服务器:负责存储用户上传的文件

 

 2)处理器的编写:

/**
     * 跨服务器文件上传
     * @param upload
     * @return
     * @throws Exception
     */
    @RequestMapping("/fileUpload3")
    public String fileUpload3(MultipartFile upload) throws Exception {
        System.out.println("SpringMVC跨服务器文件上传");
        String originalFilename = upload.getOriginalFilename();
        //定义上传文件的路径
        String path = "http://localhost:8082/springmvcDepo/uploads/";

        //创建客户端对象
        Client client = Client.create();
        //和图片服务器进行连接
        WebResource webResource = client.resource(path + originalFilename);
        //上传文件
        webResource.put(upload.getBytes());


        return "success";
    }

 

posted @ 2020-09-23 09:49  日进一卒  阅读(347)  评论(0)    收藏  举报