




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、利用Spring MVC 上传图片文件关键字: spring mvc 上传图片 近日在工作当中,需要用到上传图片的功能,然而自己平时学习的时候只会使用struts的上传功能,但因为项目并没有使用struts,而是spring mvc ,最后不得不另寻它路。通过google和百度,看到了一些相关的介绍。经过自己的偿试,最终搞定利用spring mvc 上传文件的功能,完成图片的上传。如果只是为了上传图片,可以通过限制扩展名的形式达到目的。下面给出关键的代码部分。 关于spring的配置等我不在此介绍,下面的方法是基于spring mvc模式下的。 前台部分:
2、60; 其实前台部分很简单,就是普通的FORM表单文件上传形式就可以。如: Html代码 1. <form action="comm_addProduct.do?method=saveProduct" method="post" enctype="multipart/form-data"> 2. <input name="imgFile" id="
3、;imgFile" type="file" /> 3. </form> <form action="comm_addProduct.do?method=saveProduct" method="post" enctype="multipart/form-data"> <input name="imgFile" id="imgFile" type="file
4、" /></form> 这里只需注意关键的地方,就是在FORM表单里必须有enctype="multipart/form-data"属性。关于为什么要这个属性,我想对于做过文件上传的人来说都明白。我就不多说了。不会的搜索一下吧!这里的前台非常简单,只做一个演示。 当前台的表单提交到后台后,我们重点来注意后台是如何处理上传过来的文件的。关键代码如下:Java代码 1. /* 2. * 上传图片文件,并保存到指定的路径当中 3.
5、0; */ 4. public void addImage(HttpServletRequest request,String path1,String path2) 5. /转型为MultipartHttpRequest(重点的所在) 6.
6、; MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; 7. / 获得第1张图片(根据前台的name名称得到上传的文件) 8.
7、160; MultipartFile imgFile1 = multipartRequest.getFile("imgFile"); 9. 10. /定义一个数组,用于保存可上传的文件类型
8、 11. List fileTypes = new ArrayList(); 12. fileTypes.add("jpg"); 13. fileTypes.
9、add("jpeg"); 14. fileTypes.add("bmp"); 15. fileTypes.add("gif"); 16.
10、160; 17. /保存第一张图片 18. if(!(imgFile1.getOriginalFilename() =null | "".equals(imgFile1.getOriginalFilename() 19. /*下面调用的方法,主要是用来检测上传的文
11、件是否属于允许上传的类型范围内,及根据传入的路径名 20. *自动创建文件夹和文件名,返回的File文件我们可以用来做其它的使用,如得到保存后的文件名路径等 21. *这里我就先不做多的介绍。 22. */ 23. File file1 = this.getFile(imgFile1, fileTypes,path1,path2);
12、; 24. 25. 26. 27.
13、60;28. 29. <P> 30. <P>其实上面的代码还是比较简单的,重点再于将我们常见的request对象转换为<SPAN style="WHITE-SPACE: pre">MultipartHttpRequest对象,有了这个对象,我们就可以得到用户上传的文件了。得到用户上传的文件之后,</SPAN></P> 31. <P><SPAN
14、160;style="WHITE-SPACE: pre">我们就可以做一些我们想做的事情了。在上面我们还做了一些事,那就是判断用户上传的文件类型是否属于我们所定义的那个</SPAN></P> 32. <P>数组内的类型,至于如何判断是否属于允许上传的类型,我会在下面的方法当中给出。其实也可以将下面的代码写在一个方法里,但是了为重用,我就分开写了。也许我的做法不是最好的。相当于给大家一个方向吧!</P> 33. <P> </P> &
15、#160; 34. <P>我们来看下面的两个方法,这两个方法最主要做两件事。一、判断用户上传的文件是否属于我们定义的类型范围之内,第二、将文件保存到指定的路径,这个路径是我们自己创建的。</P> 35. <P> 36. </P><PRE class=java name="code">/* 37. * 通过传入页面读取到的文件,处理后保存到本地磁盘,并返回一个
16、已经创建好的File 38. * param imgFile 从页面中读取到的文件 39. * param typeName 商品的分类名称 40. * param brandName 商品的品牌名称 41.
17、* param fileTypes 允许的文件扩展名集合 42. * return 43. */ 44. private File getFile(MultipartFile imgFile,String typeName,String brandName,List fileTypes
18、) 45. String fileName = imgFile.getOriginalFilename(); 46. /获取上传文件类型的扩展名,先得到.的位置,再截取从.的下一个位置到文件的最后,最后得到扩展名 47.
19、 String ext = fileName.substring(fileName.lastIndexOf(".")+1,fileName.length(); 48. /对扩展名进行小写转换 49. ext = ext.toLowe
20、rCase(); 50. 51. File file = null; 52. if(fileTypes.contains(ext)
21、60; /如果扩展名属于允许上传的类型,则创建文件 53. file = this.creatFolder(typeName, brandName, fi
22、leName); 54. try 55. imgFile.transferTo(file);
23、160; /保存上传的文件 56. catch (IllegalStateException e) 57.
24、60; e.printStackTrace(); 58. catch (IOException e) 59. e.printS
25、tackTrace(); 60. 61. 62. return file; 63.
26、; 64. 65. /* 66. * 检测与创建一级、二级文件夹、文件名 67. 这里我通过传入的两个字符串来做一级文件夹和二级文件夹名称 68.
27、0; 通过此种办法我们可以做到根据用户的选择保存到相应的文件夹下 69. 70. */ 71. private File creatFolder(String typeName,String brand
28、Name,String fileName) 72. File file = null; 73. typeName = typeName.replaceAll("/", ""); &
29、#160; /去掉"/" 74. typeName = typeName.replaceAll(" ", "");
30、160; /替换半角空格 75. typeName = typeName.replaceAll(" ", ""); /替换全角空格 76.
31、 77. brandName = brandName.replaceAll("/", ""); /去掉"/"
32、60;78. brandName = brandName.replaceAll(" ", ""); /替换半角空格 79. b
33、randName = brandName.replaceAll(" ", ""); /替换全角空格 80. 81.
34、0;File firstFolder = new File("c:/" + typeName); /一级文件夹 82. if(firstFolder.exists()
35、0; /如果一级文件夹存在,则检测二级文件夹 83. File secondFolder = new File(firstFolder,bra
36、ndName); 84. if(secondFolder.exists() /如果二级文件夹也存在,则创建文件
37、; 85. file = new File(secondFolder,fileName); 86. else
38、0; /如果二级文件夹不存在,则创建二级文件夹 87.
39、60; secondFolder.mkdir(); 88. file = new File(secondFolder,fileName); &
40、#160; /创建完二级文件夹后,再合建文件 89. 90. else &
41、#160; /如果一级不存在,则创建一级文件夹 91.
42、60; firstFolder.mkdir(); 92. File secondFolder = new File(firstFolder,brandName); 93. if(secondFolder.exists() /如果二级文件夹也存在,则创建文件 94.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年医院辐射安全与防护专题考试试题(附答案)
- 2025年市中心血站医学检验人员招聘考试笔试试卷(附答案)
- 中国扶贫人口管理办法
- 2025年医保信息化平台操作试题库及答案,医保知识深度解析
- 驾考三力测试题库科目一模拟题答案
- 2025年国有企业领导人员廉洁从业若干规则试题
- 2025年传染病及突发公共卫生事件报告管理培训测试题(附答案)
- 装饰设计合同室内装饰设计合同6篇
- 2025年医疗护理基础知识详解及考试指南
- 护理安全管理i考试题及答案
- 新粒子生成与生长机制-洞察及研究
- 医疗机构环境表面清洁与消毒管理标准WST512-2025解读
- GB/T 34399-2025医药产品冷链物流温控设施设备验证性能确认技术规范
- 《酒店营销与数字化实务》课件5模块五课件
- 厦门闽南话趣味教学课件
- 2025年秋期新课标人教版六年级上册数学全册教案(核心素养教案)
- 人教版四年级上册数学各单元教材分析(1-4单元)
- 2025外科招聘面试题及答案
- 廉政档案管理办法医院
- 陕西燃气器具管理办法
- 学校均衡编班管理办法
评论
0/150
提交评论