Uploadify直接发送到S3并将文件名保存到数据库

时间:2012-03-05 16:32:15

标签: c# asp.net asp.net-mvc amazon-s3 uploadify

我需要使用uploadify来允许用户上传将存储在Amazon S3中的文件。

我相信可以直接上传到S3,但我还需要在我的服务器上进行一些处理。

我需要做的是在上传之前为视频生成一个唯一的文件名,然后在成功上传后将文件名保存到我的数据库中。

任何人都可以提供有关如何实现这一目标的任何见解吗?

1 个答案:

答案 0 :(得分:1)

我们也在我们的申请中这样做。

  

我需要做的是在上传之前为视频生成一个唯一的文件名,然后在成功上传后将文件名保存到我的数据库中。

我认为你有错误的方法。

我们有一个通用Post表,我们存储所有类型的帖子,其中Photo是一个。

因此,当用户上传照片时,我们首先保存照片,使其获得唯一标识符(例如DB - PK中的IDENTITY字段),然后我们将其用作文件名。< / p>

这样我们就可以使用约定来呈现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);
}

您是否允许用户输入某种名称/标签/其他输入?如果是这样,您可以根据此名称在服务器上创建唯一的slug,然后将其用作文件名(适用于SEO)。