0.问题产生原因

  • 文件名称中含有中文,tomcat转发后可能无法正确解析文件路径.故无法访问

    1.后端改造

    1.1 新增base64编码工具类

    MyBase64Utils.java
    image.png

1.2 改造文件上传方法

image.png

  1. /**
  2. * 编码文件名
  3. */
  4. public static final String extractFilename(MultipartFile file) throws UnsupportedEncodingException {
  5. String fileName = file.getOriginalFilename();
  6. String extension = getExtension(file);
  7. String leftName= Objects.requireNonNull(fileName).replace("."+extension,"");
  8. fileName = DateUtils.datePath() + "/" + MyBase64Utils.encode(leftName)+"."+extension;
  9. return fileName;
  10. }

2.前端改造

2.1 引入 base64.js

base64.js
image.png
在模版中引入base64.js
image.png

  1. <script th:src="@{/js/base64.js}"></script>

2.2 替换 upland-lxz.js

直接替换即可
upload-lxz.js
以下是相对于之前改动的部分
image.png

  1. function getOldName(text){
  2. let endIndex = text.lastIndexOf(".");
  3. let leftName = text.substring(0,endIndex);
  4. let rightName = text.substring(endIndex);
  5. leftName=leftName.replace("⭐","/");
  6. leftName=Base.decode(leftName);
  7. return leftName+rightName;
  8. }

image.png
image.png