spring html上传文件,基于Spring3 MVC实现基于HTML form表单文件上传

基于Spring3 MVC实现基于form表单文件上传

一:杂项准备

环境搭建参考这里-http://blog.csdn.net/jia20003/article/details/8471169

二:前台页面

根据RFC1867,只要在提交form表单中声明提交方法为POST,enctype属

性声明为multipart/form-data, action声明到要提交的url即可。具体如下:

1357470742_8718.png

三:spring配置

使用spring3的MultipartHttpReqest来接受来自浏览器的发送的文件内容。

需要配Multipart解析器在express-servlet.xml中。内容如下:

1357470770_2552.png

同时还需要在maven的pom.xml文件添加apachefileupload与common-io两个包。

1357470796_6012.png

四: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中运行截屏:

1357471347_1534.png

转载请注明

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值