若依前后端分离项目上传头像报错String index out of range: -1
前台提示:
后台报错信息(有省略):
java.io.IOException: String index out of range: -1
at com.ruoyi.common.utils.file.FileUploadUtils.upload(FileUploadUtils.java:83)
at com.ruoyi.web.controller.system.SysProfileController.avatar(SysProfileController.java:114)
......
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1967)
at com.ruoyi.common.utils.file.FileUploadUtils.extractFilename(FileUploadUtils.java:127)
at com.ruoyi.common.utils.file.FileUploadUtils.upload(FileUploadUtils.java:111)
at com.ruoyi.common.utils.file.FileUploadUtils.upload(FileUploadUtils.java:79)
关键问题就出在倒数第3行的 (FileUploadUtils.java:127)
去git发现若依现在到3.8.3了,而我用的还是3.3.0版本,,应该是后来的版本更新把这个问题修复了。
但整个项目已经不好升级若依版本了,所以我对比了一下若依最新版本的代码,对应的改了几个地方:
1.修改了:E:\RuoYi-Vue\ruoyi-common\src\main\java\com\ruoyi\common\utils\file\FileUploadUtils.java类的extractFilename方法为最新代码
链接:https://gitee.com/y_project/RuoYi-Vue/blob/master/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
(123-127行)
2.添加Seq类
E:\RuoYi-Vue\ruoyi-common\src\main\java\com\ruoyi\common\utils\uuid\Seq.java
3.缺少一个StringUtils.padl(value, length)方法,所以还修改了:
E:\RuoYi-Vue\ruoyi-common\src\main\java\com\ruoyi\common\utils\StringUtils.java
添加了对应的2个padl方法
链接:https://gitee.com/y_project/RuoYi-Vue/blob/master/ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java
(535-582行)
就可以了!