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

时间:2023-02-04 22:01:46

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

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


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


 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);
 =============================================================