c# - 上传/保存视频到数据库或文件系统

标签 c# asp.net-mvc file-upload asp.net-mvc-4 video-streaming

我以前从未尝试过保存视频,所以我对此了解不多。我知道如果视频很小我可以转换为字节数组并保存到数据库,但是为了更有效率我想学习如何将任何上传的视频保存到我的服务器文件然后只保存文件路径我的数据库表中的视频。我完全不知道如何开始这样做。我在下面看到了这个例子,但不太确定它在做什么。对我来说,它似乎正在保存任何用户上传到 App_Data 文件夹的所有上传视频。是对的吗?非常感谢任何帮助。

[HttpPost]
public ContentResult UploadFiles()
{
       var r = new List<ViewDataUploadFilesResult>();

       foreach (string file in Request.Files)
       {
        HttpPostedFileBase hpf = Request.Files[file] as HttpPostedFileBase;
        if (hpf.ContentLength == 0)
        continue;

    string savedFileName = Path.Combine(Server.MapPath("~/App_Data"), Path.GetFileName(hpf.FileName));
    hpf.SaveAs(savedFileName); // Save the file

    r.Add(new ViewDataUploadFilesResult()
    {
        Name = hpf.FileName,
        Length = hpf.ContentLength,
        Type = hpf.ContentType
    });
}
// Returns json
return Content("{\"name\":\"" + r[0].Name + "\",\"type\":\"" + r[0].Type + "\",\"size\":\"" + string.Format("{0} bytes", r[0].Length) + "\"}", "application/json");
}

最佳答案

您的假设是正确的。它还返回一个包含名称、内容类型和长度的 JSON 字符串。这无疑是异步上传。

通常将文件存储在磁盘上比使用数据库更好。有几个原因:

  • 更少的开销。通过文件系统加载比通过连接到(可能是非本地的)数据库更快。
  • 大对象分配最少:在上传过程中已经创建了一个大对象。如果您要转换为字节数组,则会在内存中创建另一个大对象。

您可能想要使用数据库的一个原因是用于自定义版本控制或正确跟踪文件(通过额外的元数据等)。然而,这通常也可以使用文件系统来完成。

关于c# - 上传/保存视频到数据库或文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13792856/

相关文章:

c# - 如何使用 LINQ 删除数组中的重复元素?删除重复的元素?

c# - 如何让 nanomsg 可靠地自动重新连接?

c# - 我如何重构这两个 C# 函数以从它们所作用的特定类属性中抽象出它们的逻辑?

c# - 添加具有相同接口(interface)的 HttpClient 最终具有相同的基本 url Asp.Net Core

asp.net-mvc - ASP.NET MVC 中与可移植区域共享布局

performance - 构建可扩展的文件上传站点

java - Selenium -Java : How to get absolute path to the file

C# S3 API DeleteObject 抛出 409 冲突 : The bucket your tried to delete is not empty

c# - 在asp.net mvc View 中创建viewModel对象

php - 限制要上传的图像文件的尺寸