2012-03-05 56 views
2

我需要使用uploadify允许用户上载将被存储在Amazon S3的文件。Uploadify直接发送到S3和保存文件名数据库

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

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

任何人都可以提供关于如何做到这一点任何见解?

+0

uploadify意味着什么? – 2012-03-05 17:27:50

+1

@Ramhound这是一个将文件上传到服务器的ajax flash组件,允许多文件选择。 etc. – mattmanser 2012-03-05 17:32:19

回答

1

我们也做到这一点在我们的应用程序。

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

我想你已经得到了周围走错了路。

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

因此,当用户上传照片,我们首先保存的照片,以便得到它是一个独特的标识符(在DB e.g标识字段 - 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); 
} 

你允许用户输入某种形式的名称/标签/其他输入?如果是这样,你可以根据这个名字在服务器上创建独特的slu then,然后用它作为文件名(对SEO很有用)。

+0

我目前正在做基本相同的事情。但是,由于我的主机强加的限制,我无法上传大文件到Web服务器,然后发送到S3 ...所以我需要从浏览器直接将文件发布到S3。 – stephen776 2012-03-05 20:40:14

+1

@ stephen776 - 允许浏览器直接发布到S3似乎已经成熟。 – Greg 2012-03-05 21:01:02

+1

我相信亚马逊支持直接发布到s3,哈希解决方案用于保护传递的参数。我正在寻找关于此方法的更多信息,与uploadify – stephen776 2012-03-05 21:18:21