1、結果圖:

2、前端代碼:
<body>
<div>
<img src="" id="imgViwe" style="width: 150px; height: 200px" />
<input type="file" id="file" style="display: none" multiple="multiple"/>
<a href="javascript:void(0)" onclick="selectImg()">選擇圖片</a>
<a href="javascript:void(0)" onclick="uploadImg()">上 傳</a>
<!-- href="javascript:void(0) : 讓超鏈接去執行一個js函數,而不是去跳轉到一個地址-->
</div>
</body>
<script th:src="@{/js/jquery-3.5.1.min.js}"></script>
<script>
function selectImg() {
$("#file").click();
}
/*能回顯,但不能上傳*/
$("#file").on('change', function () {
var objUrl = getObjectURL(this.files[0]) ;
if (objUrl) {
$("#imgViwe").attr("src", objUrl);
}
});
/*真正上傳*/
function uploadImg() {
var file = $("#file")[0].files[0];
console.log("@@@-->" + file);
if (file){
var formData = new FormData();
formData.append('file', file);
$.ajax({
url: "/upload",
type: "post",
data: formData,
contentType: false,
processData: false,
success: function (res) {
console.log(JSON.stringify(res));
}
})
}
}
function getObjectURL(file) {
var url = null;
if (window.createObjectURL != undefined) { // basic
url = window.createObjectURL(file);
} else if (window.URL != undefined) { // mozilla(firefox)
url = window.URL.createObjectURL(file);
} else if (window.webkitURL != undefined) { // webkit or chrome
url = window.webkitURL.createObjectURL(file);
}
return url;
}
</script>
3、后端代碼(java實現):
@PostMapping("/upload")
@ResponseBody
public JSONObject upload(@RequestPart(name = "file", required = false) MultipartFile file, HttpServletRequest request){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
JSONObject jsonObject = new JSONObject();
String originalFilename = file.getOriginalFilename();
// 獲取文件后綴
String suffix = originalFilename.substring(originalFilename.lastIndexOf(".") + 1, originalFilename.length());
// 拼接文件上傳路徑
String savePath = Global.getProfile() + "upload/" + sdf.format(new Date()) + "/";
File savePathFile = new File(savePath);
if (!savePathFile.exists()) {
//若不存在該目錄,則創建目錄
savePathFile.mkdirs();
}
String filename = UuidUtil.get32UUID() + "." + suffix; // 文件重命名
try {
//將文件保存指定目錄
File filePath = new File(savePath + filename);
file.transferTo(filePath);
} catch (Exception e) {
jsonObject.put("type", "error");
jsonObject.put("msg", "保存文件異常!");
e.printStackTrace();
return jsonObject;
}
jsonObject.put("type", "success");
jsonObject.put("msg", "上傳圖片成功!");
return jsonObject;
}
Global.java
package com.jd.blog.common;
public class Global {
private static String profile = "D:/file/uploadImg/";
public static String getProfile() {
return profile;
}
public static void setDirPath(String profile) {
this.profile = profile;
}
}
