这里会列举一些在上传文件时生成唯一文件名的方法。

前提:在同一个文件夹目录下。

1、时间文件名

简单、方便,比如:DateTime.Now.ToString(“MMDDYYHHMMSS”),在并发率高的情况重复率还是比较高的。

2、GUID方法

理论上讲他是不重复,但是我不太喜欢TA,主要原因是他太长了。

3、GetRandomFileName()方法

这是.NET FRAMEWORK提供的,返回可用作文件夹名或文件名的加密的强随机字符串。生成类似:dcxw0x22.hlr文件名,你可以直接使用他做为你的文件名、或者去掉点号,接着加上你的上传文件的扩展名。不过呢,要注意的是,这里生成的文件名是没有检查是否唯一性,所以还需要单独处理是否已经存在这一动作。

4、test[1].jpg重复文件进行编号处理

使用windows的人会经常看到一些文件名有[数字],这里你也可以模拟类似办法,如果用户上传的文件名重复,你可以尝试加入[number]继续检查,直到唯一。

参考文章:http://www.codekeep.net/snippets/ac9e2e7a-f2d8-49b2-8f07-bf443ce93697.aspx

 

生成文件名我的观念是按具体需求,文件名跟文件夹名称都是如此。而如何有效管理上传文件也是很重要,比较乐观的比如按时间来划分、按编号来划分。我曾经升级过一些系统,旧的办法总是讲所有用户文件不管三七二十一,直接统一放置某文件夹下面,随着时间越来越久,文件夹越来越膨胀。在WINDOWS下面,当文件夹的文件数量越来越多,其IO读取速度也会越来越慢。