1.界面(记得引入ajaxfileupload.js)下载链接
<div class="col-sm-7 col-md-7">
<div class="bg-white padd-t30">
<a class="upload-btn" href="javascript:;">上传文件
<input type="file" name="file" id="newEditPUpload"></input>
</a>
<input type="hidden" id="fileName"></input>
</div>
</div>
2.js发ajax请求到后台
$(".upload-btn").change(function(){
if (!(/(\.|\/)(jpg|png|jpeg|bmp|doc|docx)$/i.test($("#newEditPUpload").val()))) {
alert("仅支持JPG,PNG,JPEG,BMP,DOC,DOCX格式");
return false;
}
$.ajaxFileUpload({
url: '/upload', //用于文件上传的服务器端请求地址
secureuri: false, //是否需要安全协议,一般设置为false
fileElementId: 'newEditPUpload', //文件上传域的ID
dataType: 'json', //返回值类型 一般设置为json
type: 'post',
success: function (result) {
if (result.code == 1) {
$("#fileName").val(result.data);
alert("上传成功");
} else {
alert("上传文件出错");
}
}
});
});
3.后台处理
@RequestMapping("/upload")
@ResponseBody
Result upload(HttpServletRequest request, HttpServletResponse response) {
Result result = new Result();
String url = "";
if (request instanceof MultipartHttpServletRequest) {
MultipartHttpServletRequest mreq = (MultipartHttpServletRequest) request;
// 获取他文件上传的对象
String fileName = mreq.getFileNames().next();
MultipartFile multipartFile = mreq.getFile(fileName);
if (multipartFile.getSize() > 1024 * 1024 * 500)
return Result.error("文件过大");
// 获取文件真实名称
String originName = multipartFile.getOriginalFilename();
// 重新设置文件名称
/*String suffix = originName.substring(originName.lastIndexOf(".") + 1);*/
String finalName = "/"+UUID.randomUUID() +"/" + originName;
// 判断文件夹和文件是否存在
String folder = filePath + "/" + UUID.randomUUID() +"/" ;
//文件传输到目标位置
File file = new File(folder);
if (!file.exists())
file.mkdirs();
url = folder + originName;
file = new File(url);
if (file.exists())
file.delete();
try {
multipartFile.transferTo(file);
result.setData(finalName);
result.setCode(1);
} catch (Exception e) {
result.setCode(2);
}
}
return result;
}