Мы также делаем это в нашем приложении.
Мне нужно создать уникальное имя файла для видео перед загрузкой, а затем сохранить его в моей базе данных после успешной загрузки.
Я думаю, вы ошиблись.
У нас есть общая таблица Post
, в которой мы храним все типы сообщений, из которых Photo
- это один.
Поэтому, когда пользователь загружает фотографию, мы сначала сохраняем фотография, чтобы она получала уникальный идентификатор (например, поле IDENTITY в DB - PK), затем мы используем его в качестве имени файла.
Таким образом, мы можем использовать соглашение длявизуализировать ссылки S3 - например, /s3.amazonaws.com/yourbucket/photoid.jpg.
Таким образом, ваш контроллер будет выглядеть примерно так:
// might need to change to HttpPostedFileBase[] for multiple file uploads
[HttpPost]
public ActionResult Upload(HttpPostedFileBase, string photoName)
{
var stream = httpPostedFileBase.InputStream;
var photo = new Photo { Name = photoName };
repository.Save(photo);
s3service.Upload(stream, photo.Id);
}
Вы разрешаете пользователю вводитьимя / теги / другой ввод какой-то?Если это так, вы можете создать уникальные слагы на сервере на основе этого имени, а затем использовать его в качестве имени файла (хорошо для SEO).