标签:res tee 需要 并且 data upload cat 上传 ica
SpringMVC对文件的上传下载,做了自己较为方便的操作方式,一下是我近期学习的小记,希望能对大家有所帮助。
当然SpringMVC的基础包也是要导入的
1 <!-- 设置文件上传 --> 2 3 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 4 <!-- 编码方式 --> 5 <property name="defaultEncoding" value="UTF-8" /> 6 <!-- 文件大小 --> 7 <property name="maxUploadSize" value="1048576"></property> 8 </bean>
其中要特别注意的是:文件上传,需要设定请求方式为POST
并且需要将enctype属性设为“multipart/form-data" ,其不会对字符进行编码,,一般用于传输二进制文件(图片、视频、、、)。其在默认情况下是application/x-www-form-urlencoded:表单数据被编码为名称/值对,这是默认的编码方式(空格转换为 "+" 加号,特殊符号转换为 ASCII HEX 值), text/plain:表单数据中的空格转换为 "+" 加号,但不对特殊字符编码。(get方式会这样,post时不会)。其个中区别我也不是很理解,去发掘学习吧。
1 <form action="${pageContext.request.contextPath }/testUpLoad" method="post" enctype="multipart/form-data"> 2 File:<input type="file" name="myfile" /> 3 Des: <input type="text" name = "mydesc" /> 4 <input type="submit" value="提交" /> 5 </form>
在文件上传中我使用了两种方式,一种是原生的方式,一种是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 block 50 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 block 62 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 block 80 e1.printStackTrace(); 81 } catch (IOException e1) { 82 // TODO Auto-generated catch block 83 e1.printStackTrace(); 84 }*/ 85 return "success"; 86 }
关于SpringMVC 文件上传基本就是这些,希望能对大家有所帮助,欢迎过路的各位指点批评。*
标签:res tee 需要 并且 data upload cat 上传 ica
原文地址:http://www.cnblogs.com/Mr-Dawei/p/7424799.html