Как мне сохранить файл для обработки в asp.net - PullRequest
0 голосов
/ 14 сентября 2011

Path.GetTempFileName довольно близко к тому, что я хочу. Но я не хотел бы перезагружать машину и терять эти файлы (поскольку они будут временными). Что мне нужно, это уникальное имя файла. Какой лучший способ сделать это? Я думал вставить ключ в БД, поручить им потянуть его, но я не думаю, что это хорошая идея.

Я думал об использовании случайного числа, но всегда беспокоюсь об использовании случайных чисел на сервере. Поскольку два запроса могут возникать одновременно, получая один и тот же номер (при условии, что я не блокирую его, что сделает его медленным). Итак, что я могу сделать?

Я планирую использовать имя файла, чтобы я мог взять файл (ы) из запроса пользователя и сохранить их в файл. Который я затем помещаю в очередь для обработки, которая может быть немедленно, секундой или минутами / часами, если что-то пошло не так.

Ответы [ 2 ]

1 голос
/ 14 сентября 2011

Хранить имена файлов, используя GUID?

Если вы ожидаете много файлов.Я заменяю тире guid, чтобы превратить его в структуру каталогов.

d524532e-8337-422f-925c-14500972c843.jpg

становится

\d524532e\8337\422f\925c\14500972c843.jpg
1 голос
/ 14 сентября 2011

Как насчет 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));
...