springMVC_day02_文件上传

    文件上传最原始的方式就是使用form表单提交要上传的文件,然后后端使用JavaIO流接收,再将文件从内存中写到硬盘上,即完成文件的上传。本质上文件上传都是如此的过程,但是那样的使用开发起来太麻烦了。
    如果使用springMVC框架进行开发的话,那么一切都将变得简洁起来。
当然,首先要编写的就是form表单,这个不管用什么方式都是需要的。

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

其次想要使用框架的使得,就是要引入相应的jar包

    <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.4</version>
    </dependency>

然后,配置spring文件,创建文件引入jar中的CommonsMultipartResolver对象,注意,这里的id值必须为multipartResolver,因为这个jar包还依赖于别的jar包。

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!--10*1024*1024*1024=10737418240=10G‬-->
        <property name="maxUploadSize" value="10737418240"/>
    </bean>

接下来就是springMVC控制器的编写,创建一个类,以注解的方式,让spring框架给我们创建其对象。在类上写一个RequestMapping注解,提供这个类的方法的父路径。然后就是方法的具体实现。

@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("fileUpload2")
    public String fileUpload2(HttpServletRequest request, MultipartFile upload) throws Exception {
        System.out.println("fileUpload2...");
        //使用fileupload组件完成文件上传
        String path = request.getSession().getServletContext().getRealPath("/uploads/");
        File file = new File(path);
        if (!file.exists()){
            //创建文件夹
            if (file.mkdirs()){
                System.out.println(path+": 文件夹创建成功");
            } else {
                System.out.println("文件夹创建失败");
            }
        }
        //上传文件项
        String fileName = upload.getOriginalFilename();
        //把文件的名称设置为唯一值
        String uuid = UUID.randomUUID().toString().replace("-", "");
        //完成文件上传
        fileName = uuid + "_" + fileName;
        fileName= URLEncoder.encode(fileName, "UTF-8");
        upload.transferTo(new File(path, fileName));
        System.out.println("上传完成");
        return "success";
    }
}

这样项目就可以跑起来了,上传的时候要注意文件的大小,不能太大。获取文件名称的时候,要注意对中文的字符进行相应的处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值