0

送信せずにファイル ダイアログからファイルを選択した後、コントローラー メソッドを自動的に呼び出すにはどうすればよいですか。ユーザーがファイルを保存してファイル システムに保存する準備ができるまで、そのファイルを一時フォルダーに保存できます。このアプローチは理想的ですか?最終的には、ユーザーが短いビデオをアップロードして一時フォルダーに保存し、ビューにサムネイルを表示して、そこに保存できるようにすることを目標としています。

<form id="fileupload" action="/Home/UploadFiles" method="POST" 
               enctype="multipart/form-data">
  <input id="fileupload" type="file" onchange="uploadSelectedFile(this)" 
               name="file">
  @*<input type="submit" />*@
</form>

コントローラーで:

[HttpPost]
public ActionResult UploadFiles(HttpPostedFileBase file)
{
     //Save file to temp folder 
     //then later user can call a save button to acutally save the files.
     return Json();
}
4

2 に答える 2

1

更新:どうやらuploadifyはキー「Filedata」でファイルを送信します。完全な asp.net-mvc/uploadify サンプルを含む記事をここに書きました。


通常のファイルアップロードに頼ることはできないと思います。

ユーザーがファイルをアップロードしたらすぐに、バックで ajax アップロードを行う必要があります。使用できる既製のコントロールについては、このリンクを参照してください。

Uploadifyはかなり有望なようで、JQuery プラグインです。これは、uploadify で行う方法です。

<input type="file" name="file_upload" id="file_upload" />

$(function() {
    $("#file_upload").uploadify({
        'swf'      : '/uploadify/uploadify.swf',
        'uploader' : '<path_to_your_action_method>' //Youcontroller/UploadFiles
    });
});

コントローラーで:

[HttpPost]
public ActionResult UploadFiles()
{
     //Uploadify sends this as "Filedata"
     HttpPostedFile theFile = Request.Files["Filedata"];
     //save your file here...

     //anything you return will be sent to the onUploadSucess event
     http://www.uploadify.com/documentation/uploadify/onuploadsuccess/
     return Json();
}

ユーザーが保存を選択すると、ユーザーに関連付けられたファイルを保存したかどうかを判断し、ファイルを適切な場所に転送できます。

于 2012-12-13T06:57:16.573 に答える
1

言ったようgideonに、通常のファイルアップロードではこれを行うことはできないと思います。

Uploadifyこれは、ファイル アップロード コントロールを使用して行うことができます。

 $('#file_upload').uploadify({
                'checkExisting': 'Content/uploadify/check-exists.php',
                'swf': '/Content/uploadify/uploadify.swf',
                'uploader': '/Home/uploadify',
                'auto': false,
                'buttonText': 'Browse'
});

そしてコントローラーのコードは

[HttpPost]
        public ActionResult Uploadify(IEnumerable<HttpPostedFileBase> fileData)
        {
            foreach (var file in fileData)
            {
                if (file.ContentLength > 0)
                {

                    currpath = Path.Combine(System.Environment.GetEnvironmentVariable("TEMP"), file.FileName);

                    file.SaveAs(currpath);
                }
            }
            return View();
        }

HttpPostedFileBase代わりに単一のファイルを使用してアップロードする場合IEnumerable<HttpPostedFileBase>

お役に立てれば。

于 2012-12-13T07:10:43.447 に答える