解决ASP.NET中上传多文件时重名问题

 时间:2024-11-04 16:33:45

1、代码大多如下:string 新文件名 = DateTime.Now.ToString("yyMMddHHmmss");上面这行代码会导致很有趣的bug:那就是当网站繁忙很多人同时上传的时候,或者一个人多文件同时上传的时候,你会发现,你传上去文件,经常性(跟别人)都是一样的,经常性“丢掉”一些图片。

2、你会奇怪,为什么?很简单,服务器处理太快了,几乎1秒内就处理你的多文件上传请求,这一秒内,所有的文件名都相同(因为上面那个行代码就只精确到秒)。OK,既然是文件名相同,我精确到毫秒,不就解决了?于是有了下面的代码:string 新文件名 = DateTime.Now.ToString("yyMMddHHmmssfff");//精确到毫秒,防止1秒内被处理的文件获得的新名称都相同经过上面的改造,会发现问题减少了很多,不再经常“丢”图片了……但是,偶尔还是有照片丢失的情况发生……知道原因吗?MSDN告诉我们:“Windows系统时钟精确到10~15毫秒”,也即说,DateTime类型只能精确到10~15毫秒。如果用时间命名,即便精确到毫秒,10~15毫秒内处理的文件,名字仍然会相同,有趣的bug仍然会产生。故,不推荐使用日期时间命名文件。

3、那怎么办呢?用Guid!唯一的、一出生即与众不同的家伙,它的唯一性,理论上保证了同一目录下无可能出现重复的文件名。string 新文件名 = Guid.NewGuid().ToString("N");

  • JDK1.8详细安装教程及环境变量的配置
  • IntelliJ IDEA怎么整理代码格式
  • IntelliJ IDEA怎么设置主题背景
  • 如何判断jdk环境是否配置成功
  • java程序包不存在怎么办
  • 热门搜索
    大理旅游点 青岛有什么旅游景点 泰山旅游图 秦皇岛旅游网 顺德旅游景点大全 旅游局电话 华山旅游路线 湖南有什么旅游景点 环球旅游平台 北京旅游局官网