1.前端
单击上传触发 upload_photo函数
<form @submit.prevent="upload_photo">
<input id="fileInput" type="file" name="file" />
<button type="submit">上传</button>
</form>
upload_photo函数
const upload_photo = () => {
const fileInput = document.getElementById('fileInput');
const file = fileInput.files[0];
console.log(file)
if (!file) {
error_message.value = "请选择一个文件";
return;
}
const formData = new FormData();
formData.append('file', file);
console.log(formData)
$.ajax({
url: "http://127.0.0.1:9090/user/account/upload",
type: "post",
data: formData,
processData: false,
contentType: false,
headers: {
Authorization: "Bearer " + store.state.user.token,
},
success(resp) {
console.log(resp);
error_message.value = "";
if (resp.error_message === "success") {
photo.value = resp.path;
} else {
error_message.value = resp.error_message;
}
}, error() {
}
});
};
2.后端
controller
@PostMapping("/user/account/upload")
public Map<String,String> upload(@RequestParam("file") MultipartFile file){
return updateService.uploadPhoto(file);
}
service
@Override
public Map<String, String> uploadPhoto(MultipartFile file) {
Map<String,String> resp = new HashMap<>();
System.out.println("文件上传中!!!");
if(file.isEmpty()){
resp.put("error_message","上传图片不能为空!");
return resp;
}
String originalFileName = file.getOriginalFilename();
String ext = "." + originalFileName.split("\\.")[1];
String uuid = UUID.randomUUID().toString().replace("-", "");
String newFileName = uuid + ext;
String pre = "E:\\java\\JavaProject\\Educational-Management-System\\backend\\src\\main\\resources\\static\\images\\";
String path = pre + newFileName;
try {
file.transferTo(new File(path));
} catch (IOException e) {
e.printStackTrace();
}
resp.put("path",path);
return resp;
}