注: 如需要页面回显图片等操作,可以用nginx给静态资源配置域名方式解决。
1. 后台Java类
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
@Controller
public class UploadController {
private final static Logger log = LogManager.getLogger(UploadController.class);
@Value("${dir}")
private String dir; // 图片保存位置
@RequestMapping("upload")
@ResponseBody
public String uploadImage(@RequestParam(value = "file", required = false) MultipartFile file) throws IllegalStateException {
if (file.isEmpty()) {
log.error("请上传文件");
return "请上传文件";
}
// 时间戳 + 文件后缀
String fileName = System.currentTimeMillis() + "." + file.getOriginalFilename().split("\\.")[1];
String path = dir + File.separator + fileName;
File dest = new File(path);
if(!dest.exists()) {
dest.mkdirs();
}
try {
file.transferTo(dest);
return "http://localhost" + File.separator + fileName;
} catch (IOException e) {
log.error("file.transferTo is exception;", e);
}
return "";
}
}
2.配置文件(application.properties)
dir=G:/upload/file
3.前端js
$.ajax({
type: 'POST',
url: "/uploadfile",
data: new FormData($("form")[0]),
contentType: false,
processData: false, // 这个很有必要,不然不行
dataType: "text",
mimeType: "multipart/form-data",
cache: false,
success:function(data){
alert(data);
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
alert("上传失败,请检查网络后重试1");
}
});