MultipartResolver实现文件上传,spring的transferTo保存文件方法

Spring MVC 为文件上传提供了直接的支持,这种支持是通过即插即用的 MultipartResolver 实现的。Spring 用Jakarta Commons FileUpload 技术实现了一个MultipartResolver 实现类:CommonsMultipartResovler Spring MVC 上下文中默认没有装配 MultipartResovler,因此默认情况下不能处理文件的上传工作,如果想使用 Spring的文件上传功能,需现在上下文中配置 MultipartResolver.
• defaultEncoding: 必须和用户 JSP 的 pageEncoding 属性一致,以便正确解析表单的内容。
• 为了让 CommonsMultipartResovler 正确工作,必须先将 Jakarta Commons FileUpload 及 Jakarta Commons io的类包添加到类路径下。

1.首先在maven中导入如下的依赖:

<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.2.1</version>
    </dependency>
 
    <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.0.1</version>
    </dependency>

2.配置MultipartResolver
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="UTF-8"></property>
        <property name="maxUploadSize" value="1024000"></property>
</bean>
3.
<form action="testFileUpload" method="post" enctype="multipart/form-data">
    File:<input type="file" name="file">
    Desc:<input type="text" name="desc">
    <input type="submit" value="Submit">
  </form>
4.
@RequestMapping("/testFileUpload")
    public String testFileUpload(@RequestParam("desc") String desc,
                                 @RequestParam("file") MultipartFile file) throws IOException{
        System.out.println("desc: " + desc);
        System.out.println("OriginalFilename: " + file.getOriginalFilename());
        System.out.println("InputStream: " + file.getInputStream());
        return "success";
    }

目前controller里只是实现了一些打印的功能,如果需要,可以将接收到的文件存到服务器的硬盘上,这样就真正完成了一个文件保存的操作。

________________________________下面就是操作保存的代码与配置————————————

form表单
<form id="formfile" action="slideshowin" method="post" enctype="multipart/form-data">
    <input type="button" id="buttonf" οnclick="buttonfunction()" value="增加图片" />
<input type="file" name="file" οnchange="fileupload()" id="files" />
</form>
ajxa提交表单
function fileupload() {
获取表单,必须加[0]才能取到数据
   var formData =new FormData($("#formfile")[0]);
             $.ajax({
                 url: url,
                 type: "POST",
                 data: formData,
                 cache:false,
                 contentType: false,
                 processData: false,
                 success: function (dat) {
                     
                 },
                 error: function (dat) {
                     
                 }
             });
}
后台代码 spring的
MultipartFile类,必须在xml配置
<bean id="multipartResolver"
      class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="209715200"/>
    <property name="defaultEncoding" value="UTF-8"/>
    <property name="resolveLazily" value="true"/>
</bean>
public String insert(@RequestParam("file")MultipartFile file,HttpServletRequest request)throws IOException {
                   if(!file.isEmpty()){
                        获取后缀名
                       String suffix =file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
                       //设置允许上传文件类型
                       String suffixList = "jpg,png,ico,bmp,jpeg";
                       判断是否包含
                        if(suffixList.contains(suffix.trim().toLowerCase()))""){
                        保存文件的路径
                    String path = request.getSession().getServletContext().getRealPath("")+"slideImg/"+file.getOriginalFilename();
查看路径是否存在,不存在就创建
                            //image/jpeg
                           if(!new File(path).exists()){
                               new File(path).mkdirs();
           }
            spring的transferTo保存文件方法
           file.transferTo(new File(path));
           Slideshow slideshow=new Slideshow();
           slideshow.setSlideshowImg(file.getOriginalFilename());
           slideshow.setSlideshowState(0);
           slideshow.setSlideshowTime(new DataTime().getDatatime());
           slideshowService.insert(slideshow);
           return "成功!";
       }
       return "图片格式不正确!";
    }
    return "未选择图片!";
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值