基于Spring3 MVC实现基于HTML form表单文件上传
2013-01-06 19:17
555 查看
基于Spring3 MVC实现基于form表单文件上传
一:杂项准备
环境搭建参考这里-http://blog.csdn.net/jia20003/article/details/8471169
二:前台页面
根据RFC1867,只要在提交form表单中声明提交方法为POST,enctype属
性声明为multipart/form-data, action声明到要提交的url即可。具体如下:
三:spring配置
使用spring3的MultipartHttpReqest来接受来自浏览器的发送的文件内容。
需要配Multipart解析器在express-servlet.xml中。内容如下:
同时还需要在maven的pom.xml文件添加apachefileupload与common-io两个包。
四:Controller中方法实现
常见问题:
1. java.io.IOException: Access is denied避免这个错误是把文件创建在app
context path的下面所以要获取servlet context的本地路径。
2. Request类型不是MultipartHttpReqest类型,原因是没有配置spring的Multipart解析器
Chrome中运行截屏:
转载请注明
一:杂项准备
环境搭建参考这里-http://blog.csdn.net/jia20003/article/details/8471169
二:前台页面
根据RFC1867,只要在提交form表单中声明提交方法为POST,enctype属
性声明为multipart/form-data, action声明到要提交的url即可。具体如下:
三:spring配置
使用spring3的MultipartHttpReqest来接受来自浏览器的发送的文件内容。
需要配Multipart解析器在express-servlet.xml中。内容如下:
同时还需要在maven的pom.xml文件添加apachefileupload与common-io两个包。
四:Controller中方法实现
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST) public ModelAndView getUploadFile(HttpServletRequest request, HttpServletResponse response) { System.out.println("fucking spring3 MVC upload file with Multipart form"); String myappPath = request.getSession().getServletContext().getRealPath("/"); try { if (request instanceof MultipartHttpServletRequest) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; System.out.println("fucking spring3 MVC upload file with Multipart form"); // String myappPath = multipartRequest.getServletContext().getRealPath("/"); // does not work, oh my god!! MultipartFile file = multipartRequest.getFiles("userfile1").get(0); long size = file.getSize(); byte[] data = new byte[(int) size]; InputStream input = file.getInputStream(); input.read(data); // create file, if no app context path, will throws access denied. // seems like you could not create any file at tomcat/bin directory!!! File outFile = new File(myappPath + File.separator + file.getOriginalFilename()); if(!outFile.exists()) { outFile.createNewFile(); System.out.println("full path = " + outFile.getAbsolutePath()); } else { System.out.println("full path = " + outFile.getAbsolutePath()); } FileOutputStream outStream = new FileOutputStream(outFile); outStream.write(data); outStream.close(); input.close(); } } catch (Exception e) { e.printStackTrace(); } return new ModelAndView("welcome"); }
常见问题:
1. java.io.IOException: Access is denied避免这个错误是把文件创建在app
context path的下面所以要获取servlet context的本地路径。
2. Request类型不是MultipartHttpReqest类型,原因是没有配置spring的Multipart解析器
Chrome中运行截屏:
转载请注明
相关文章推荐
- 基于Spring3 MVC实现基于HTML form表单文件上传
- 基于Spring3 MVC实现基于HTML form表单文件上传
- 基于Spring3 MVC实现基于HTML form表单文件上传
- 基于Spring3 MVC实现基于HTML form表单文件上传
- 基于Spring3 MVC实现基于form表单上传Excel文件,批量导入数据!
- 基于Spring3 MVC实现基于form表单文件上传
- 基于Spring3 MVC实现基于form表单上传Excel文件,批量导入数据时,报错:Unable to recognize OLE stream !
- SpringMVC + FormDate + Vue + file表单 ( 实现 js 单文件和多文件上传 )
- ajaxfileupload.js+SpringMVC实现文件上传
- WebUploader+SpringMVC实现文件上传功能
- spring mvc +uploadify2.1 实现文件上传
- SpringMVC+ajaxFileUpload.js实现文件上传
- Spring MVC+jquery实现文件上传
- 基于SpringMVC+Bootstrap实现图片异步上传进度显示
- Spring Web mvc Maven实现文件上传
- dwz+jquery+fileupload+springmvc实现文件上传 及图片预览
- Springmvc+uploadify实现文件带进度条批量上传
- 使用html+ajax+formdata+SpringMVC实现单个文件,和多个文件上传功能
- Spring 4MVC下实现文件的上传下载
- springmvc + ajaxfileupload 实现异步上传文件(图片)