博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC文件上传
阅读量:5259 次
发布时间:2019-06-14

本文共 4662 字,大约阅读时间需要 15 分钟。

SpringMVC文件上传

 

SpringMVC对文件的上传下载,做了自己较为方便的操作方式,一下是我近期学习的小记,希望能对大家有所帮助。

  • 文件的上传主要包含一下几个步骤:
  • 1、导入需要使用的jar包;(只要是使用别人的内容就要使用导包,导包)
  • 2、配置SpringMVC的配置文件
  • 3、书写上传页面
  • 4、编写上传Controller

1、导入jar包

  • commons-fileupload-1.3.1.jar
  • commons-io-2.4.jar

当然SpringMVC的基础包也是要导入的

 

2、配置SpringMVC的配置文件

1 
2 3
4
5
6
7
8

 

3、书写上传页面

其中要特别注意的是:文件上传,需要设定请求方式为POST

并且需要将enctype属性设为“multipart/form-data" ,其不会对字符进行编码,,一般用于传输二进制文件(图片、视频、、、)。其在默认情况下是application/x-www-form-urlencoded:表单数据被编码为名称/值对,这是默认的编码方式(空格转换为 "+" 加号,特殊符号转换为 ASCII HEX 值), text/plain:表单数据中的空格转换为 "+" 加号,但不对特殊字符编码。(get方式会这样,post时不会)。其个中区别我也不是很理解,去发掘学习吧。

1 
2 File:
3 Des:
4
5

4、编写上传Controller

在文件上传中我使用了两种方式,一种是原生的方式,一种是Spring中CommonsMultipartFile  提供的方法。

 

1 //文件上传 2  3 @RequestMapping(value="/testUpLoad",method = RequestMethod.POST) 4  5 public String testUpLoad(@RequestParam(value="myfile",required=false) 6             CommonsMultipartFile  myfile,@RequestParam(value="mydesc") String mydesc, 7                 HttpServletRequest request){ 8  9             if(myfile.isEmpty()){10                    System.out.println("文件不存在");11             } else{12                  13                    //获取上传的文件名14                    String fileName = myfile.getOriginalFilename();15                    System.out.println("上传的文件名为:  "+fileName);16 17                    /*重新定义上传文件名,也就是存储时的名字,18                 *这里了避免上传后覆盖原本的文件,就是用了UUID的方式更改了命名 19                 */20                    String myFileName = UUID.randomUUID().toString().replace("-", "") +fileName;21                    System.out.println("重新定义的上传文件的名  :"+myFileName);22 23                    //服务器地址 获取服务器的地址首先要在其WEB-INF目录下存在一个upload文件,否则会出错24                    String serverPath = request.getServletContext().getRealPath("/WEB-INF/upLoad");25                    System.out.println("服务器文件存储的地址:"+serverPath);26 27                    //以下是原生的方法28                    InputStream iS =null;29                    FileOutputStream fOS = null;30              31                    try {32                       /*创建输出流,并且新建了文件 地址目录是服务器目录,33                 *文件名为刚才定下的新名字34                 */35                           fOS = new FileOutputStream(new File(serverPath,myFileName));36                           //获取页面上选中文件的字节流37                       iS = myfile.getInputStream();38                           //使用存储缓冲39                           byte[] by = new byte[2048];40                           int len = iS.read(by);41                           while(len!=-1){42                          /*这里的len很有必要,在最后一次读取的时候可能没有将byte填满,43                    * 因此就要将读入长度的内容写出。44                    */ 45                                  fOS.write(by, 0, len);46                                  len = iS.read(by);47                           }48                    } catch (IOException e) {49                           // TODO Auto-generated catch block50                           e.printStackTrace();51                    } finally {52                           //关闭流53                           try {54                                  if(fOS!=null){55                                         fOS.close();56                                  }57                                  if(iS!=null){58                                         iS.close();59                                  }60                           }catch (IOException e) {61                                         // TODO Auto-generated catch block62                                         e.printStackTrace();63                                  }64                           }65                    }66 67             /* //下面是SpringMVC提供的方法           68 69                    File upFile = null;70                    //创建存储文件71                    upFile = new File(serverPath,myFileName);72                    if(!upFile.exists()){73                           upFile.mkdirs();74                    }75                    try {76                           //进行文件传输,Spring中提供的方法,直接将文件复制77                           myfile.transferTo(upFile);78                    } catch (IllegalStateException e1) {79                           // TODO Auto-generated catch block80                           e1.printStackTrace();81                    } catch (IOException e1) {82                           // TODO Auto-generated catch block83                           e1.printStackTrace();84                    }*/85             return "success";86      }

 

 

 

关于SpringMVC 文件上传基本就是这些,希望能对大家有所帮助,欢迎过路的各位指点批评。*

转载于:https://www.cnblogs.com/Mr-Dawei/p/7424799.html

你可能感兴趣的文章
js隐藏手机号码中间
查看>>
es6笔记(3) 变量的解构赋值
查看>>
终于也忍不住来写oi经历了
查看>>
BZOJ4851: [Jsoi2016]位运算
查看>>
网络分析软件(科来网络分析软件)
查看>>
面试经
查看>>
布局模型(一)
查看>>
洛谷 P4093 [HEOI2016/TJOI2016]序列
查看>>
redis密码设置、访问权限控制等安全设置
查看>>
IntelliJ IDEA 14 利用JRebel实现热部署 二
查看>>
实用博客链接
查看>>
hql语法001
查看>>
MySql 和SQLServer 申明变量以及赋值
查看>>
【Scala篇】--Scala初始与基础
查看>>
利用webxml来构建wp的天气预报
查看>>
关系映射的1to1
查看>>
Lucene搜索笔记
查看>>
git基础介绍
查看>>
linux 内核库函数
查看>>
PHP写时复制, 变量复制和对象复制不同!!!
查看>>