实现上传图片-生成唯一的名字

我们在实现上传图片这个功能的时候,会发现不同的用户上传同一张图片的时候,在所在文件夹中只会生成一张图片,为了避免这种弊端,我们可以这么来做:

 即为上传的图片生成唯一的名字


 根据日期,上传文件的名字(扩展名),来计算目录名


 Calendar cal=Calendar.getInstance();
 int hour=cal.get(Calendar.HOUR_OF_DAY); 24小时制,12小时用HOUR


 上传文件存放格式如:


 uploadfiles/2015/03/15122018005.jpg,这样就可以很清楚的区别不同用户上传同一张图片而只显示一张图片的弊端了!




 创建目录和生成文件名的代码
 =============================================================
//如果保存上传文件的根目录不存在,创建根目录


//如果保存上传文件的根目录不存在,创建根目录
String fileName="uploadfiles";
HttpServletRequest req=ServletActionContext.getRequest();
fileName=req.getServletContext().getRealPath("")+fileName;
File file=new File(fileName);
if(!file.exists())
{
file.mkdir();
}
Calendar cal=Calendar.getInstance();


//如果年的目录不存在,创建年的目录
int year=cal.get(Calendar.YEAR);
fileName=fileName + "\\" + year;
file=new File(fileName);
if(!file.exists())
{
file.mkdir();
}
//如果月份不存在,创建月份的目录
int month=cal.get(Calendar.MONTH)+1;
fileName=fileName+"\\";
if(month<10)
{
fileName=fileName+"0";
}
fileName=fileName+month;
file=new File(fileName);
if(!file.exists())
{
file.mkdir();
}


//生成文件名的日部分
int day=cal.get(Calendar.DAY_OF_MONTH);
fileName=fileName+"\\";
if(day<10)
{
fileName=fileName+"0";
}
fileName=fileName+day;


//生成文件名的小时部分
int hour=cal.get(Calendar.HOUR_OF_DAY);
if(hour<10)
{
fileName=fileName+"0";
}
fileName=fileName+hour;


//生成文件名的分钟部分
int minute=cal.get(Calendar.MINUTE);
if(minute<10)
{
fileName=fileName+"0";
}
fileName=fileName+minute;


//生成文件名的秒部分
int second=cal.get(Calendar.SECOND);
if(second<10)
{
fileName=fileName+"0";
}
fileName=fileName+second;


//生成文件名的毫秒部分
int millisecond=cal.get(Calendar.MILLISECOND);
if(millisecond<10)
{
fileName=fileName+"0";
}
if(millisecond<100)
{
fileName=fileName+"0";
}

fileName=fileName+millisecond;


//生成文件的扩展名部分
fileName=fileName+ imageFileName.substring(imageFileName.indexOf(".")) ;
System.out.println(fileName);
 =============================================================



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弗兰随风小欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值