mirror of
https://gitee.com/kekingcn/file-online-preview.git
synced 2025-09-19 01:58:10 +08:00
修复文件下载流URL参数中包含中文URL编码不正确导致HTTP-400异常
This commit is contained in:
@@ -123,30 +123,35 @@ public class DownloadUtils {
|
|||||||
* 对最有一个路径进行转码
|
* 对最有一个路径进行转码
|
||||||
* @param urlAddress
|
* @param urlAddress
|
||||||
* http://192.168.2.111:8013/demo/Handle中文.zip
|
* http://192.168.2.111:8013/demo/Handle中文.zip
|
||||||
|
* http://192.168.2.111:8013/download?id=1&filename=中文.zip
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private String encodeUrlParam(String urlAddress) {
|
|
||||||
String newUrl = "";
|
private String encodeUrlParam(String urlAddress){
|
||||||
try {
|
StringBuffer sb = new StringBuffer();
|
||||||
String path = "";
|
for (int i = 0; i < urlAddress.length(); i++) {
|
||||||
String param = "";
|
char c = urlAddress.charAt(i);
|
||||||
if (urlAddress.contains("?")) {
|
if (c >= 0 && c <= 255) {
|
||||||
path = urlAddress.substring(0, urlAddress.indexOf("?"));
|
sb.append(c);
|
||||||
param = urlAddress.substring(urlAddress.indexOf("?"));
|
} else {
|
||||||
}else {
|
byte[] b;
|
||||||
path = urlAddress;
|
try {
|
||||||
|
//指定需要的编码类型
|
||||||
|
b = String.valueOf(c).getBytes("utf-8");
|
||||||
|
} catch (Exception ex) {
|
||||||
|
System.out.println(ex);
|
||||||
|
b = new byte[0];
|
||||||
|
}
|
||||||
|
for (int j = 0; j < b.length; j++) {
|
||||||
|
int k = b[j];
|
||||||
|
if (k < 0) {
|
||||||
|
k += 256;
|
||||||
|
}
|
||||||
|
sb.append("%" + Integer.toHexString(k).toUpperCase());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
String lastPath = path.substring(path.lastIndexOf("/") + 1);
|
|
||||||
String leftPath = path.substring(0, path.lastIndexOf("/") + 1);
|
|
||||||
String encodeLastPath = URLEncoder.encode(lastPath, "UTF-8");
|
|
||||||
newUrl += leftPath + encodeLastPath;
|
|
||||||
if (urlAddress.contains("?")) {
|
|
||||||
newUrl += param;
|
|
||||||
}
|
|
||||||
} catch (UnsupportedEncodingException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
return newUrl;
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user