2

アップロードしたファイルの名前をデータベースに保存しようとしています。ファイルを正常にアップロードするこのコードがあります。

   $(function () {
    $("#uploader").plupload({
        // General settings
        runtimes: 'silverlight,flash,html5',
        url: '@Url.Content( "~/FileUploadChunks/UploadChunk" )',
        max_file_size: '10mb',
        chunk_size: '1mb',
        unique_names: true,
         // Flash settings
        flash_swf_url: '/plupload/js/plupload.flash.swf',
        // Silverlight settings
        silverlight_xap_url: '/plupload/js/plupload.silverlight.xap'
    });

});

これはコントローラーです

[HttpPost]
    public ActionResult UploadChunk(int? chunk, int chunks, string name)
    {
        var fileUpload = Request.Files[0];
        var uploadpath = Server.MapPath("~/App_Data/UploadedFiles");
        chunk = chunk ?? 0;
        using (var fs = new FileStream(Path.Combine(uploadpath, name), chunk == 0 ? FileMode.Create : FileMode.Append))
        {
            var buffer = new byte[fileUpload.InputStream.Length];
            fileUpload.InputStream.Read(buffer, 0, buffer.Length);
            fs.Write(buffer, 0, buffer.Length);
        }
        return Content("chunk uploaded", "text/plain");
    }

テストのために、このような名前をキャプチャしてリストに追加してビューに戻そうとしましたが、ビューにリストを印刷してその内容を確認する方法がわかりません。

[HttpPost]
    public ActionResult UploadChunk(int? chunk, int chunks, string name)
    {
        var fileUpload = Request.Files[0];
        var uploadpath = Server.MapPath("~/App_Data/UploadedFiles");
        chunk = chunk ?? 0;
        using (var fs = new FileStream(Path.Combine(uploadpath, name), chunk == 0 ? FileMode.Create : FileMode.Append))
        {
            var buffer = new byte[fileUpload.InputStream.Length];
            fileUpload.InputStream.Read(buffer, 0, buffer.Length);
            fs.Write(buffer, 0, buffer.Length);
        }
        List<string> list = new List<string>();  

        foreach (string inputTagName in Request.Files)
        {
            HttpPostedFileBase file1 = Request.Files[inputTagName];
            if (file1.ContentLength > 0)
            {
                list.Add(file1.FileName);
            }
        }
        ViewBag.List = list;
       }

最終的には、名前をループしてデータベースに保存しようとしています。どんな助けでも大歓迎です。ありがとう

4

1 に答える 1

0

私たちがあなたに良い助けを提供するために、あなたはあなたのデータベースなどに関する情報を提供しませんでした. しかし、私はそれを試してみます。

あなたの他の質問に答えるために、

名前をキャプチャしてリストに追加してビューに戻ろうとして、このようなことを試みましたが、ビューのリストを印刷してその内容を表示する方法がわかりません。

あなたの見解では、次のようなものが表示されます。

@foreach (string fileName in ViewBag.List)
{
    @fileName
    <br />
}

Entity Framework Code Fist を使用すると仮定すると、ファイル名をデータベースに保存するには、モデルが必要です。

public class UploadedFileName
{
    public int Id { get; set; }
    public string Name { get; set; }
}

次に、コントローラーで、foreach使用したステートメントを次のように変更できます。

foreach (HttpPostedFile file in Request.Files)
{        
    if (file.ContentLength > 0)
    {
        UploadedFileName uploadedFile = new UploadedFileName();
        uploadedFile.Name = file.FileName;
        databaseContext.UploadedFileNames.Add(uploadedFile);
    }
}

エラーがある場合は、上記HttpPostedFileが必要になるHttpPostedFileBase場合があります。はdatabaseContextデータベース コンテキストで、通常は ですdb

于 2012-09-30T19:55:17.873 に答える