上传:
@RequestMapping("/upload")
public String upload(Model m,String name,List<MultipartFile> uploadFile,HttpServletRequest request){
if(!uploadFile.isEmpty()&&uploadFile.size()>0){
String path=request.getServletContext().getRealPath("/upload/");
File file=new File(path);
if(!file.exists()){
file.mkdirs();
}
for(MultipartFile item:uploadFile){
String oldName=item.getOriginalFilename();
String newFileName=name+"_"+UUID.randomUUID()+"_"+oldName;
try {
item.transferTo(new File(path,newFileName));
m.addAttribute("msg", "上传成功");
} catch (Exception e) {
e.printStackTrace();
m.addAttribute("msg", "上传错误");
}
}
}else{
m.addAttribute("msg", "无上传文件");
}
return "success";
}
//multiple="multiple"该属性是h5新特性,指定后可以进行多文件上传
<form action="${pageContext.request.contextPath }/upload" enctype="multipart/form-data" method="post">
<input type="text" name="name" /><br>
<input type="file" name="uploadFile" multiple="multiple" /> <br/>
<input type="submit" value="提交" />
</form>
下载:
@RequestMapping("/download")
public ResponseEntity<byte[]> download(HttpServletRequest request,String fileName) throws Exception{
//fileName=new String(fileName.getBytes("ISO-8859-1"),"UTF-8");
String path=request.getServletContext().getRealPath("/upload/");
//创建文件对象
File file=new File(path+File.separator+fileName);
fileName=getFileName(request, fileName);
//设置响应头
HttpHeaders hreaders=new HttpHeaders();
hreaders.setContentDispositionFormData("attachment", fileName);
hreaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),hreaders,HttpStatus.OK);
}
/**
* 对文件名进行编码 防止乱码
* @param request
* @param fileName
* @return
* @throws Exception
*/
public String getFileName(HttpServletRequest request,String fileName) throws Exception{
String[] IEkey={"MSIE","Trident","Edge"};
//获取请求头代理信息
String userAgent=request.getHeader("User-Agent");
for(String keyWord:IEkey){
return URLEncoder.encode(fileName, "utf-8");
}
return new String(fileName.getBytes("UTF-8"),"ISO-8859-1");
}
<a href="${pageContext.request.contextPath }/download?fileName=<%=URLEncoder.encode("符越涵_7f34c071-9968-4be0-848e-a136378359ba_捕获.PNG", "utf-8") %>">
下载文件
</a>