c# - 上传直接发送到 S3 并将文件名保存到数据库

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

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

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

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

谁能提供有关如何实现此目标的任何见解?

最佳答案

我们也在我们的应用程序中这样做。

What I need to do is generate a unique filename for the video before upload and then save the filename to my database after a successful upload.

我认为你理解错了。

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

因此,当用户上传照片时,我们首先保存照片以便它获得唯一标识符(例如数据库中的 IDENTITY 字段 - PK),然后我们将其用作文件名。

这样我们就可以使用约定来呈现 S3 链接 - 例如/s3.amazonaws.com/yourbucket/photoid.jpg。

所以你的 Controller 看起来像这样:

// 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)。

关于c# - 上传直接发送到 S3 并将文件名保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9570262/

相关文章:

c# - 如何在 C# mvc 中停止或启动 Windows 服务?

asp.net-mvc - 登录后立即在 ActionFilter 中检查 User.Identity.IsAuthenticated

c# - 在vs2012中设置为起始页

c# - Devexpress winform 自动生成列

c# - 创建自定义 UITextField 并使用 MonoTouch 覆盖方法

c# - 如何在 Windows Phone 8.1 中清除导航缓存模式的缓存

asp.net - 当放置在 ASP.NET 应用程序的 Bin 文件夹中时, native DLL 会发生什么情况?

c# - 如何删除事件处理程序并将其重新附加到 C# 中的控件?

asp.net - 自定义主体在新请求时恢复为 GenericPrincipal

c# - 使用 Guid 单点登录