springmvc 上传下载
直接上代码
<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(/^\s\s*/, '' ).replace(/\s\s*$/, '' ) + ')');
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);
}

浙公网安备 33010602011771号