0.问题产生原因
- 文件名称中含有中文,tomcat转发后可能无法正确解析文件路径.故无法访问
1.后端改造
1.1 新增base64编码工具类
MyBase64Utils.java
1.2 改造文件上传方法
/**
* 编码文件名
*/
public static final String extractFilename(MultipartFile file) throws UnsupportedEncodingException {
String fileName = file.getOriginalFilename();
String extension = getExtension(file);
String leftName= Objects.requireNonNull(fileName).replace("."+extension,"");
fileName = DateUtils.datePath() + "/" + MyBase64Utils.encode(leftName)+"."+extension;
return fileName;
}
2.前端改造
2.1 引入 base64.js
base64.js
在模版中引入base64.js
<script th:src="@{/js/base64.js}"></script>
2.2 替换 upland-lxz.js
直接替换即可
upload-lxz.js
以下是相对于之前改动的部分
function getOldName(text){
let endIndex = text.lastIndexOf(".");
let leftName = text.substring(0,endIndex);
let rightName = text.substring(endIndex);
leftName=leftName.replace("⭐","/");
leftName=Base.decode(leftName);
return leftName+rightName;
}