Skip to content

生成唯一文件名(.NET版)

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

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

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读取速度也会越来越慢。

相关日志

Categories: 技术.

Tags:

Comment Feed

No Responses (yet)



Some HTML is OK

or, reply to this post via trackback.

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word