上传文件时怎么要防止文件名重复

menuvb 2004-08-16 08:42:16
连续上传十张图片(三秒内全部完成了),结果发现竟然上传的文件名竟然有几张重复了(就是说十张本来不是相同的图像,现在已经有三张是同一张图像了)

我第一次生成的文件名是使用了 Now.Ticks.ToString()

结果这个生成相同文件名机率太大了,

后来使用时间,精确到毫秒。
Now.Year.ToString & Now.Month.ToString & Now.Day.ToString & Now.Hour.ToString & Now.Minute & Now.Second.ToString & Now.Millisecond.ToString

结果发现还是会有相同的文件名相同,

后来使用了guid.tostring 也会有相同的文件名

不知道有什么好的方法?最好是简单点的,我可不想有高深的算法来完成
...全文
815 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiewhite 2004-08-20
  • 打赏
  • 举报
回复
如果不用这种重命名的方法上传,能不能判断同名文件已存在,并给出提示啊?
俞庆平 2004-08-17
  • 打赏
  • 举报
回复
GUID System.Guid.NewGuid().ToString();不存在重复的.
或者是用户登录ID+DateTime.Now.Ticks.ToString().一般不存在重复的,不排除可能性。
或者是自己产生一个产生序列号的对象,每次调用增加一次,注意的是互斥访问。如果对Oracle的Sequence有印象的话,就很好做。效率最高,但要注意的是要为它提供永久化。
在Application_Start和Application_End分别反序列化和序列化。
或者是利用类似于Hash排序,自己写个算法,判断你产生的文件名是否存在,不存在,利用之,存在重新生成,不过这种算法效率很低,不建议。
zzxck 2004-08-17
  • 打赏
  • 举报
回复
GUID
绝对是唯一的。。。
luckweb 2004-08-17
  • 打赏
  • 举报
回复
随机生成8位数,再加上日期,应该没重的了
yezie 2004-08-16
  • 打赏
  • 举报
回复
if(File.Exists(已经上传的文件名))
{
//更改文件名
}
Nicholasqpl 2004-08-16
  • 打赏
  • 举报
回复
建议用全局唯一表示,同意 cuike519(marshal(修练中...))
bitm 2004-08-16
  • 打赏
  • 举报
回复
如果是用用户名上传,
可以加个用户名+时间 生成文件名!!
hhdh2004 2004-08-16
  • 打赏
  • 举报
回复
if(File.Exists(已经上传的文件名)){
//更改文件名
}
xiaopai20 2004-08-16
  • 打赏
  • 举报
回复
那可以那个文件夹下放个文本记数器,
这样子就不会重复了~
uffeng 2004-08-16
  • 打赏
  • 举报
回复
再+上 文件大小
cuike519 2004-08-16
  • 打赏
  • 举报
回复
使用GUID。
Guid guid = new Guid();
string filename = guid.ToString().Replace("-","_");
menuvb 2004-08-16
  • 打赏
  • 举报
回复
我保存的就是系统时间的时间,又没有,我三秒钟之内十多个文件都上传完了。

现在我自己写了一个算法,在原有毫秒上再进行生成新随机的五位数相连

如果这个还重复只能说这个世界真的是太小了:)
jianli0108 2004-08-16
  • 打赏
  • 举报
回复
取文件上传的时候的系统时间为文件名保存就OK了,你说是不是?
要代码吗?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧