最近在开发中,遇到附件下载功能前端传递的url地址 浏览器自动将特殊字符 隐藏 替换成空格,导致 后台找不到 文件;现将解析方法 总结:
前端 使用 js
window.self.location="list.jsp?searchtext="+encodeURIComponent(seartext);
后台可以用
解密
searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");
经测试发现,前端使用 encodeURIComponent 加密时,后台不用 再次解密,因为 java 已经 将 前端 encodeURIComponent 加密的值 自动解密了;
没加密之前后台接收的参数:
C:\workspace\oaAllNew\oaWatermark\uploadFile\water\2022\1008\20221008161512009\致远 A8 协同管理软件 V71SP1 用户操作手册(企业版) .pdf
加密后之后 后台接收参数:
C:\workspace\oaAllNew\oaWatermark\uploadFile\water\2022\1008\20221008160721982\致远 A8+ 协同管理软件 V71SP1 用户操作手册(企业版) .pdf
加密
String fileName=URLEncoder.encode(name,"utf-8");
1、建议 做文件上传下载时,最好 上传时 把文件名进行加密,然后前端获取文件名进行解密;前端传递 参数时,最好 将 文件件 加密后传递,因为浏览器会自动过滤特殊符号。
2、如果不加密,可以 让后台 使用UUID生成一个新的文件名。