fix: [Bug]远程excel认证时对密码中的特殊字符需要进行编码 #16089

This commit is contained in:
taojinlong
2025-06-03 16:38:50 +08:00
committed by taojinlong
parent 7be2e0391b
commit 74a4ffd3d4

View File

@@ -31,6 +31,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.regex.Matcher;
@@ -667,7 +668,7 @@ public class ExcelUtils {
List<TableField> fields = new ArrayList<>();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
String s = reader.readLine();// first line
if(StringUtils.isNotEmpty(s)){
if (StringUtils.isNotEmpty(s)) {
String[] split = s.split(",");
for (int i = 0; i < split.length; i++) {
String filedName = split[i];
@@ -764,10 +765,10 @@ public class ExcelUtils {
DEException.throwException(Translator.get("i18n_invalid_address"));
}
}
if(StringUtils.isNotEmpty(remoteExcelRequest.getUserName())){
if (StringUtils.isNotEmpty(remoteExcelRequest.getUserName())) {
username = remoteExcelRequest.getUserName();
}
if(StringUtils.isNotEmpty(remoteExcelRequest.getPasswd())){
if (StringUtils.isNotEmpty(remoteExcelRequest.getPasswd())) {
password = remoteExcelRequest.getPasswd();
}
filePath = filePath.startsWith("/") ? filePath.substring(1) : filePath;
@@ -782,10 +783,10 @@ public class ExcelUtils {
try {
URL url;
if(StringUtils.isNotEmpty(username) && StringUtils.isNotEmpty(password)){
url= new URL("ftp://" + username + ":" +password + "@" + serverAddress + "/" + filePath);
}else {
url= new URL("ftp://" + serverAddress + "/" + filePath);
if (StringUtils.isNotEmpty(username) && StringUtils.isNotEmpty(password)) {
url = new URL("ftp://" + username + ":" + URLEncoder.encode(password, StandardCharsets.UTF_8) + "@" + serverAddress + "/" + filePath);
} else {
url = new URL("ftp://" + serverAddress + "/" + filePath);
}
URLConnection conn = url.openConnection();