Когда я добавляю изображение, я хочу, чтобы оно создало новое случайное имя файла, потому что, если Вы добавляете изображение с тем же именем, оно просто перезапишет.
Вы можете сгенерировать идентификатор Guid и использовать его для имени файла. Хотя это означало бы, что файлы не читаются человеком и не имеют информации о том, что такое контент.
Это встроенный метод Path.GetRandomFileName
. Он возвращает случайное имя папки или имя файла.
Метод GetRandomFileName возвращает криптографически стойкую случайную строку, которую можно использовать как имя папки или имя файла. В отличие от GetTempFileName, GetRandomFileName не создает файл. Когда безопасность вашей файловой системы является первостепенной, этот метод следует использовать вместо GetTempFileName.
Если вы хотите использовать свое расширение (например, .jpg
вместо сгенерированного), вы можете использовать другой вспомогательный метод Path.ChangeExtension
:
string extension = ".jpg";
string fileName = Path.ChangeExtension(
Path.GetRandomFileName(),
extension
);
System.IO.Path. GetRandomFileName получает имя файла, которое гарантированно является уникальным .
Если вы хотите сохранить изображения, вы можете просто использовать GUID в качестве имени файла:
string filename = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".jpg");
Я всегда делаю это, когда мне нужно другое расширение файла чем .tmp (какие файлы получаются при их создании через GetTempFileName).
Конечно, вы можете создать файлы с помощью GetTempFileName, а затем переименовать их, но тогда вам придется еще раз проверить, существует ли файл с новым именем ...
Name your image using a GUID
Для C# вы можете использовать: System.Guid.NewGuid().ToString()
Вы можете построить его, используя текущее время.
string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".png";
Приведенный выше пример отформатирует текущее время, используя год, месяц, день, часы, минуты, секунды и доли секунды. (Доли секунды можно указать с меньшим количеством f
s, если вы хотите уменьшить их до единицы).
Я бы также выбрал решение GUID.
Вот код, который я бы использовал регулярно:
public static string GetRandomFileName(string extension)
{
StringBuffer sb = new StringBuffer(Guid.NewGuid().ToString());
if (!string.IsNullOrEmpty(extensions))
{
sb.Append(".");
sb.Append(extension);
}
return sb.ToString();
}
Предоставит вам прекрасное решение для многократного использования. Поместите это в свою «коллекцию моих величайших моментов» - классную библиотеку, и вперед.
Я бы пошел с трепетом . Используйте исходное имя файла + DateTime.Now.ToString ("yyyyMMddHHmmssffff");
.