spring 上传文件

来源:互联网 发布:国内餐饮软件排名 编辑:程序博客网 时间:2024/04/30 11:10

提示:本文是在 spring mvc 入门(包括返回结果为json的请求处理)基础上讨论的。

一、XML配置

在abc-servlet.xml上添加

    <!-- MultipartResolver for parsing file uploads, implementation for Commons FileUpload ,    needs commons-fileupload.jar,commons-io.jar --><!-- 以字节为单位的最大上传文件的大小 2M -->    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="resolveLazily" value="true"/><property name="maxUploadSize" value="2097152"/><property name="maxInMemorySize" value="4096" /><property name="defaultEncoding" value="UTF-8" /></bean>

二、处理类

@Controller@RequestMapping(value="uploadAndDown")public class UploadAndDownController extends BaseController {@RequestMapping(value="upload",method=RequestMethod.POST)public String handleUpload(HttpServletRequest request,HttpServletResponse response){MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;CommonsMultipartFile cmFile = (CommonsMultipartFile)multipartRequest.getFile("firstFile");PrintWriter out = null;if(!cmFile.isEmpty()){try {File uploadFile = new File("d:"+File.separator+"temp"+File.separator+"1.jpg");if(uploadFile.isDirectory())uploadFile.delete();if(!uploadFile.exists())uploadFile.createNewFile();cmFile.getFileItem().write(uploadFile);responseSetting(response);out = response.getWriter();out.write("<script>parent.uploadCallback('上传成功。');</script>");} catch (Exception e) {log.error(e);} finally {if(out != null)out.close();}}else{log.error("file name " + cmFile.getName()+ " uploaded is empty.");}return null;}@ExceptionHandler(MaxUploadSizeExceededException.class)public String handleMaxUploadSizeExceededException(MaxUploadSizeExceededException ex, HttpServletRequest request,HttpServletResponse response){PrintWriter out = null;try {responseSetting(response);out = response.getWriter();out.write("<script>parent.uploadCallback('上传文件太大。');</script>");} catch (IOException e) {log.error(e,e);} finally {if(out != null)out.close();}return null;}

三、发起上传文件的界面

<div style="margin: 50px 0 0 0"><form id="uploadForm" action="" enctype="" target=""><input type="file" id="firstFile" name="firstFile"/><input type="submit" value="Submit" onclick="upload()"/></form></div><iframe id="uploadAndDownFrame" name="uploadAndDownFrame" style="display: none;"></iframe>

其中处理的javascript:

function upload(){$("#uploadForm").attr("target","uploadAndDownFrame");$("#uploadForm").attr("enctype","multipart/form-data");$("#uploadForm").attr("method","POST");$("#uploadForm").attr("action","${path}/rest/uploadAndDown/upload");$("#uploadForm").submit();}function uploadCallback(re){alert(re);}


0 0