直接上代码
<form id="uploadForm"> <input id="file" type="file" name="file"> </form> <a href="javascript:;" onclick="upload()">确认上传</a>
function upload(){ var formData = new FormData($( "#uploadForm" )[0]); var size = $("#file")[0].files[0].size; if(size>1024*1024*10){ alert("上传的文件不能超过10MB"); return; } var xmbh = '${model.xmbh}'; formData.append("xmbh",xmbh); $.ajax({ url: 'uploadFile' , type: 'POST', data: formData, async: false, processData: false, contentType: false, success: function (data) { var reJson = eval('(' + data.replace(/^ss*/, '' ).replace(/ss*$/, '' ) + ')'); var msg = reJson.msg; if(msg=='success'){ var name = reJson.name; var path = reJson.path.substr(1,reJson.path.length); var size = reJson.size; alert("文件上传成功,文件名:"+name+",文件大小:"+size); $("#fujian").append(' <a href="'+path+'/'+name+'" target="_blank">'+name+'</a>'); }else{ alert(msg); } } }); }
/** * 上传文件 * * @param file * @param request * @return * @throws IOException */ @RequestMapping(value = "/uploadFile", method = RequestMethod.POST) @ResponseBody public String uploadFile(@RequestParam("file") MultipartFile file, @RequestParam("xmbh") String xmbh, HttpServletRequest request) throws IOException { Map<String, String> reMap = new HashMap<>(); if (!file.isEmpty()) { // 根据项目编号查询附件 String fujian = duociduizhangService.getSqzlfjByXmbh(xmbh); // 上传的文件名称 String name = file.getOriginalFilename(); //文件大小 String size = TmFileUtil.countFileSize(file.getSize()); // 文件后缀 String ext = TmFileUtil.getExtNoPoint(name); if(ext!=null){ if(ext.equals("exe") || ext.equals("bat") || ext.equals("sh") || ext.equals("dat")){ reMap.put("msg", "该格式文件不能上传"); return mapper.writeValueAsString(reMap); } } //防文件重复提交 if (fujian != null && fujian.contains("?")) { String[] arr = fujian.split("\?"); for (String s : arr) { if (s.equals(name)) { reMap.put("msg", "不能上传同名文件"); return mapper.writeValueAsString(reMap); } } } else if (fujian != null && fujian.equals(name)) { reMap.put("msg", "不能上传同名文件"); return mapper.writeValueAsString(reMap); } String path = request.getSession().getServletContext().getRealPath(SysUtils.getProperty("uploadPath") + "/" + xmbh); // 设置需要上传到哪个目录去,绝对路径 File parent = new File(path); if (!parent.exists()) parent.mkdirs(); //存储文件 file.transferTo(new File(parent, name)); if (fujian == null) { duociduizhangService.updateSqzlfjByXmbh(name, xmbh); } else { duociduizhangService.updateSqzlfjByXmbh(fujian + "?" + name, xmbh); } reMap.put("msg", "success"); reMap.put("name", name); reMap.put("path", SysUtils.getProperty("uploadPath") + "/" + xmbh); reMap.put("size", size); return mapper.writeValueAsString(reMap); } else { reMap.put("msg", "上传失败,上传的文件为空"); return mapper.writeValueAsString(reMap); } }
/** * 下载文件 * * @return * @throws IOException */ @RequestMapping(value = "/upload/{xmbh}/{filename:.+}") public ResponseEntity<byte[]> download(@PathVariable("xmbh") String xmbh, @PathVariable("filename") String filename,HttpServletRequest request) throws IOException { System.out.println("xmbh = " + xmbh); System.out.println("filename = " + filename); String dfileName = new String(filename.getBytes("gb2312"), "iso8859-1"); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); headers.setContentDispositionFormData("attachment", dfileName); String Path = SysUtils.getProperty("uploadPath")+"/"+xmbh+"/"+filename; Path = request.getSession().getServletContext().getRealPath(Path); return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(new File(Path)), headers, HttpStatus.CREATED); }