Uploadify отправить непосредственно на S3 и сохранить имя файла в базе данных - PullRequest
2 голосов
/ 05 марта 2012

Мне нужно использовать uploadify, чтобы пользователи могли загружать файлы, которые будут храниться в Amazon S3.

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

Что мне нужно сделать, это создать уникальное имя файла для видео перед загрузкой, а затем сохранить имя в моей базе данных после успешной загрузки.

Может ли кто-нибудь рассказать о том, как этого добиться?

1 Ответ

1 голос
/ 06 марта 2012

Мы также делаем это в нашем приложении.

Мне нужно создать уникальное имя файла для видео перед загрузкой, а затем сохранить его в моей базе данных после успешной загрузки.

Я думаю, вы ошиблись.

У нас есть общая таблица 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).

...