六、springmvc之文件上传

六、springmvc之文件上传

1、普通文件上传页面要求

    <form action=""  method="post" enctype="multipart/form-data" >
        <input type="file" />
    </form>
    1).必须使用post提交
    2).数据类型:multipart/form-data
    3).input表单:type="file"

2、spring文件上传页面要求

 1).页面传递的file表单的名称必须和此对象属性名一模一样
 2).需要配置文件解析器:CommonsMultipartResolver
     maxUploadSize属性:可以设置最大上传的大小
 3).控制器方法用MultipartFile对象接受 (包含了字节流,文件名称)

配置文件解析器

    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 
            maxUploadSize:设置最大上传的大小:1M
         -->
        <property name="maxUploadSize" value="1048576"></property>
    </bean>

控制器方法

    /**
     * request:
     *  MultipartFile : springMVC提供的对象 ,包含了文件上传中的所有信息(字节流,文件名称)
     * 使用条件:
     *  1.页面传递的file表单的名称必须和此对象属性名一模一样
     *  2.需要配置文件解析器:CommonsMultipartResolver 
     *  3.控制器方法用MultipartFile对象接受   (包含了字节流,文件名称)
     *      
     */
    @RequestMapping("/upload")
    public String testupload(HttpServletRequest request, HttpServletResponse response,MultipartFile uploadFile) throws IOException {
        // 1.获取根目录,并创建子目录
        String realPath = request.getSession().getServletContext().getRealPath("/upload");
        String dateTime = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
        File file = new File(realPath, dateTime);
        // 如果没有目录,创建
        if (!file.exists()) {
            file.mkdirs();
        }
        //2.获取文件名,并生成存储文件的随机名称
        String fileName = uploadFile.getOriginalFilename();
        String uuid = UUID.randomUUID().toString();
        fileName = uuid + fileName;
        //3.将上传流输出到文件
        uploadFile.transferTo(new File(file, fileName));
        return "forward:/WEB-INF/jsps/success.jsp";
    }

3、spring跨服务器文件上传

控制器方法

//远程文件地址
    private static String remoteServer = "http://localhost:8081/day02_springmvc5_02image/uploads/";
     /**
      *使用springMVC进行跨服务器文件上传
      *
      *上传文件服务器需要设置可写
      *  <init-param>
      *      <param-name>readonly</param-name>
      *      <param-value>false</param-value>
      *  </init-param>
      */
    @RequestMapping("/upload1")
    public String testupload1(HttpServletRequest request, HttpServletResponse response,
            MultipartFile uploadFile) throws IOException {

        //1.获取文件名,并生成存储文件的随机名称
        String fileName = uploadFile.getOriginalFilename();
        String uuid = UUID.randomUUID().toString();
        fileName = uuid + fileName;
        remoteServer = remoteServer+fileName;
        //2.将门户网站和文件服务设置联系
        Client client = Client.create();
        //3.通过client对象,设置远程服务器地址创建和当前工程的关联关系
        WebResource resource = client.resource(remoteServer);
        //4.put:将上传到工程中的文件,写入到远程服务器上
        resource.put(uploadFile.getBytes());
        return "forward:/WEB-INF/jsps/success.jsp";
    }

文件服务器需要设置可写

     <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
         <init-param>
            <!--tomcat文件服务器需要设置只读为false,即 可写-->
            <param-name>readonly</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
     </servlet>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值