kkFileView icon indicating copy to clipboard operation
kkFileView copied to clipboard

http://127.0.0.1:8012/onlinePreview?url=http://xxxx?file=xxx,多个问号的异常

Open Yangshuixiang opened this issue 3 years ago • 2 comments

认真debug后发现是多个问号的切割取值导致有bug,一点修改后暂时修复这个问题

/** * 去掉url中的路径,留下请求参数部分**[采用截取方式]** * * @param strURL url地址 * @return url请求参数部分 */ private static String truncateUrlPage(String strURL) { String strAllParam = null; strURL = strURL.trim(); Matcher matcher = Pattern.compile("\?").matcher(strURL); if (matcher.find()) { strAllParam = strURL.substring(matcher.start() + 1); } // String[] arrSplit = strURL.split("[?]"); // if (strURL.length() > 1) { // if (arrSplit.length > 1) { // if (arrSplit[1] != null) { // strAllParam = arrSplit[1]; // } // } // } return strAllParam; }

/** * 对url中的文件名进行UTF-8编码[针对?做下判断] * * @param url url * @return 文件名编码后的url */ public static String encodeUrlFileName(String url) { String noQueryUrl = ""; int fileNameStartIndex; int fileNameEndIndex; String encodedFileName; String encodeUrl = ""; try { if (url.contains("?")) { noQueryUrl = url.substring(url.indexOf("?") + 1, url.length()); fileNameStartIndex = noQueryUrl.lastIndexOf('=') + 1; fileNameEndIndex = noQueryUrl.lastIndexOf('.'); encodedFileName = URLEncoder.encode(noQueryUrl.substring(fileNameStartIndex, fileNameEndIndex), "UTF-8"); encodeUrl = url.substring(0, url.lastIndexOf("=") + 1) + encodedFileName + noQueryUrl.substring(fileNameEndIndex); } else { noQueryUrl = url; fileNameStartIndex = noQueryUrl.lastIndexOf('/') + 1; fileNameEndIndex = noQueryUrl.lastIndexOf('.'); encodedFileName = URLEncoder.encode(noQueryUrl.substring(fileNameStartIndex, fileNameEndIndex), "UTF-8"); encodeUrl = url.substring(0, fileNameStartIndex) + encodedFileName + url.substring(fileNameEndIndex); } // String noQueryUrl = url.substring(0, url.contains("?") ? url.indexOf("?") : url.length()); } catch (UnsupportedEncodingException e) { return null; } return encodeUrl; }

Yangshuixiang avatar Sep 29 '21 04:09 Yangshuixiang

建议把文件名放到fullfilename,然后接口不展示真实文件名。 参考我这样↓ https://github.com/kekingcn/kkFileView/pull/312/commits/499bc839b86da7cfc44d59222cd2e54d182910d7

TosakaWolf avatar Dec 01 '21 06:12 TosakaWolf

建议把文件名放到fullfilename,然后接口不展示真实文件名。 参考我这样↓ 499bc83 放弃了,部署也是问题多,干脆重写了一个工具

Yangshuixiang avatar Dec 01 '21 06:12 Yangshuixiang