Path.GetTempFileName非常接近我想要的。但我不想重新启动机器并丢失这些文件(因为它们会是临时的)。我需要的是一个唯一的文件名。什么是最好的方法呢?我正在考虑将一个密钥插入数据库,提交它们,但我不认为它是一个好主意。
我在考虑使用随机数,但我总是担心在服务器上使用随机数。因为两个请求可以同时发生获得相同的数字(假设我不锁定它会使它变慢)。那么,我该怎么办?
我计划使用文件名,以便我可以从用户发布请求中获取文件并将其保存到文件中。然后我将其放入队列中进行处理,这可能是立即,从现在开始的一秒或者如果出现问题则以分钟/小时为单位。
答案 0 :(得分:1)
Guid:
怎么样?var appData = Server.MapPath("~/"App_Data);
var filename = Path.Combine(appData, string.Format("{0}.tmp", Guid.NewGuid()));
或某些时间戳或其他内容:
var appData = Server.MapPath("~/"App_Data);
var filename = Path.Combine(appData, string.Format("{0:dd_MM_yyyy_fffff}.tmp", DateTime.Now));
答案 1 :(得分:1)
使用GUID存储文件名?
如果你期待很多文件。我将guid破折号替换为目录结构。
d524532e-8337-422f-925c-14500972c843.jpg
变为
\d524532e\8337\422f\925c\14500972c843.jpg