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方法详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!