Java Spring MVC 上传下载文件配置及controller方法详解
下载:
1.在spring-mvc中配置(用于100M以下的文件下载)
<beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <propertyname="messageConverters"> <list> <!--配置下载返回类型--> <beanclass="org.springframework.http.converter.ByteArrayHttpMessageConverter"/> <beanclass="org.springframework.http.converter.StringHttpMessageConverter"> <!--配置编码方式--> <propertyname="supportedMediaTypes"value="application/json;charset=UTF-8"/> </bean> </list> </property> </bean>
下载文件代码
@RequestMapping("/file/{name.rp}") publicResponseEntity<byte[]>fileDownLoad(@PathVariable("name.rp")Stringname,HttpServletRequestrequest,HttpServletResponseresponse){ //@PathVariableStringname, //@RequestParam("name")Stringname, //System.out.println("<name>"+name); //System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); ResponseEntity<byte[]>re=null; try{ /** *css,js,json,gif,png,bmp,jpg,ico,doc,docx,xls,xlsx,txt,swf,pdf ***/ //下载防止静态加载干扰 Feelutilef=newFeelutile(); name=f.getfileformat(name); StringpathString="C:\\tempDirectory\\"+name; Filefile=newFile(pathString); HttpHeadersheaders=newHttpHeaders(); //Stringfilename=URLEncoder.encode(name,"UTF-8");//为了解决中文名称乱码问题 Stringfilename=newString(name.getBytes("utf-8"),"utf-8"); byte[]by=FileUtils.readFileToByteArray(file); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); //URLEncoder.encode(filename,"UTF-8") headers.setContentDispositionFormData("attachment",filename); headers.setContentLength(by.length); re=newResponseEntity<byte[]>(by,headers,HttpStatus.CREATED); }catch(Exceptione){ e.printStackTrace(); try{ request.getRequestDispatcher("/error/404.jsp").forward(request,response); }catch(ServletExceptione1){ //TODOAuto-generatedcatchblock e1.printStackTrace(); }catch(IOExceptione1){ //TODOAuto-generatedcatchblock e1.printStackTrace(); } } returnre; }
上传文件:
1在spring-mvc中配置
<!--4.文件上传配置fileupload--> <beanid="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <propertyname="defaultEncoding"> <value>UTF-8</value> </property> <propertyname="maxUploadSize"> <value>1048576000</value> </property> <propertyname="maxInMemorySize"> <value>40960</value> </property> </bean>
在controller中代码如下
@RequestMapping(value="/upload",method=RequestMethod.POST) @ResponseBody publicJsonupload(Docdoc,@RequestParam("uploadFile")CommonsMultipartFilefile){ Jsonj=newJson(); try{ Stringrealpath=this.servletContext.getRealPath("/upload"); StringuploadFileFileName=file.getOriginalFilename(); StringuploadFileFileNameWithoutSpace=uploadFileFileName.replaceAll("",""); StringfileType=uploadFileFileNameWithoutSpace.substring(uploadFileFileNameWithoutSpace.lastIndexOf(".")); FiletargetFile=newFile(realpath+File.separator,uploadFileFileNameWithoutSpace); if(targetFile.exists()){ targetFile.delete(); } file.getFileItem().write(targetFile); docService.upload(doc,uploadFileFileNameWithoutSpace); j.setSuccess(true); j.setMsg("Uploadmanualsuccessfully"); }catch(Exceptione){ logger.error(ExceptionUtil.getExceptionMessage(e)); j.setMsg("Uploadmanualunsuccessfully"); } returnj; }
以上所述是小编给大家介绍的JavaSpringMVC上传下载文件配置及controller方法详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!