3

私はこれまでビデオを保存しようとしたことがないので、これについてはよくわかりません。ビデオが小さい場合は、バイト配列に変換してデータベースに保存できますが、より効率的にするために、アップロードしたビデオをサーバーファイルに保存してから、のファイルパスを保存する方法を学びたいと思います。データベーステーブルのビデオ。私はこれをどのように始めればよいのか全く分かりません。私は以下のこの例を見ましたが、それが何をしているのかよくわかりません。私には、すべてのユーザーが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");
}
4

1 に答える 1

2

あなたの仮定は正しいです..それはまた、名前、コンテンツタイプ、長さのJSON文字列を返しています。これは間違いなく非同期アップロードです。

一般に、データベースを使用するよりも、ファイルをディスクに保存する方が適切です。いくつかの理由は次のとおりです。

  • オーバーヘッドが少なくなります。(潜在的に非ローカルの)データベースへの接続を介するよりも、ファイルシステムを介してロードする方が高速です。
  • ラージオブジェクトの割り当ては最小限です。アップロード中にラージオブジェクトがすでに作成されています。バイト配列に変換する場合は、メモリ内にさらに別の大きなオブジェクトを作成しています。

データベースを使用する理由の1つは、カスタムバージョン管理またはファイルの適切な追跡(追加のメタデータなどを介して)のためです。ただし、これは通常、ファイルシステムを使用して実行することもできます。

于 2012-12-09T23:16:30.667 に答える