生成绝对唯一的文件名(java)
本文最后更新于 2024-11-02,文章内容可能已经过时。
思路:使用ip+当前时间戳+三位随机数的组合
- service层
// 获取系统为文件提供的新文件名
public String getUploadFilename(HttpServletRequest request, File file) {
String filename, timeStamp, ip, ext;
Random r = new Random();
String random = "" + r.nextInt(10);
timeStamp = new RenameUtils().getTimeStemp();// 获取当前时间戳
ip = new RenameUtils().getClientId(request);// 获取访问者的ip
ip = ip.replace(":", "");
ip = ip.replace(".", "");
// 获取三个随机数
for (int i = 0; i < 2; i++) {
random += r.nextInt(10);
}
// 获取文件后缀
ext = "." + file.getFileExt();
// 组合成新的文件名
filename = ip + timeStamp + random + ext;
return filename;
}
- util层
public class RenameUtils {
//获取当前时间戳
public String getTimeStemp() {
String timeStamp;
//定义时间戳格式
SimpleDateFormat time=new SimpleDateFormat("yyyyMMddHHmmssSSS");
//获取当前时间
timeStamp=time.format(new Date());
return timeStamp;
}
//获取访问者的ip
public String getClientId(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
}
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 晨哥之家
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果
音乐天地