摘要:
在项目开发中,有些前端人员习惯在文件上传的时候只保存文件可访问的全路径存进数据库里面...
在项目开发中,有些前端人员习惯在文件上传的时候只保存文件可访问的全路径存进数据库里面。如http://192.168.1.3:28001/profile/2023/12/21/sLaO849swLWsZtF46Fl4wooOflU3ff_20231221143714A001.png 这样操作本没有什么错误。但是会给项目留下一个风险。就是万一服务器的域名进行更换了。如图例中192.168.1.3如果换为新的域名,则图片就打不开了。而域名进行更换也是时有发生的事情。针对这样的坑。特别记录一下后端处理方法。如何存储URL域名字符串path部分(就是除域名外的后半部分如/profile/2023/12/21/sLaO849swLWsZtF46Fl4wooOflU3ff_20231221143714A001.png)。废话不多说。代码如下
/**
* 通过对URL字符串进行截取除域名后获取path部分的字符串
* @param url 要处理的URL字符串
* @return path部分的字符串
*/
public static final String getPathByUrlString(String url){
String regex = "^(http|https)://([^/]+)(/?.*)$";
String path = null;
if(url.matches(regex)){
Integer startIndex = url.indexOf("://");
if(startIndex != -1){
startIndex += 3;
int endIndex = url.indexOf("/", startIndex);
if (endIndex != -1) {
path = url.substring(endIndex);
} else {
path = url.substring(startIndex);
}
}
}
return path;
}