3

PluploadはAsp.Net MVCに使用します

任意の値またはビューモデルを ActionResult メソッドに渡す必要があります

たとえば、フォームの最初の行コード

@using (Html.BeginForm("UploadImage", "Home",
            FormMethod.Post, new { enctype = "multipart/form-data" }))

ActionResult メソッドのシグネチャ

[HttpPost]
public ActionResult UploadImage(int? chunk, string name, **I NEED PASS PARAMETER HERE !!!**)

私はできませんでした。

4

4 に答える 4

5

アップロードされたファイルごとに異なるパラメーターを渡す必要がある場合は、Passing dynamic parameters with each file in plupload を参照 してください。私の MVC4 プロジェクトで作業しています。

于 2012-10-28T22:53:18.273 に答える
3

まず、公式ドキュメントをざっと見てみましょう。

私がすぐに見つけた次のAPIプロパティがあります:

multipart_params

マルチパート ファイルと一緒にポストされる引数を持つオブジェクトの名前/値のコレクション。

それでは、いくつかのサンプル コードを見てみましょう。

var uploader = new plupload.Uploader({
    runtimes : 'html5,html4',
    browse_button : 'pickfiles',
    max_file_size : '10mb',
    resize : {width : 320, height : 240, quality : 90},
    url : 'upload.php',
    filters : [
        {title : "Image files", extensions : "jpg,gif,png"},
        {title : "Zip files", extensions : "zip"}
    ],
        multipart_params: { param1: 'value1', something: $('#foo').val() }
});

そしてあなたの行動方法...

[HttpPost]
public ActionResult UploadImage(int? chunk, int chunks, string name, string param1, string something)
{ ... }

それを試してみてください..(それはテストされていません..しかし、始めるには十分です)

于 2012-07-03T21:43:58.217 に答える
2

@ Pure.Krome のソリューションは、ユーザーがページにデータを入力しても変化しない静的な値がある場合に機能します。要素の内容が変更された可能性があるという問題に遭遇するまで、私はその解決策を使用しました。したがって、アップロードが開始される直前にのみ multipart_params を変更するソリューションが必要でした。

multipart_params が Uploader() のコンストラクターに渡される場合、using$('#foo').val()はその時点での ID 'foo' を持つ要素の値を使用します。要素 'foo' がフォーム要素である場合、これは望ましくない可能性があります。

したがって、ここに代替案があります。コンストラクターには、次のパラメーターを渡すことができます。

var uploader = new plupload.Uploader({
   // other params
   multipart: true
});

次に、アップロードを開始する直前に、multipart_params を設定する必要があります。たとえば、ページのどこかにボタンがあるとします。そのボタンには、アップロードを開始する JavaScript ハンドラーがあります。multipart_params の設定を含む結果のハンドラーは、次のようになります。

$('#uploadfiles').click(function (e) {
   uploader.settings.multipart_params = { param1: document.getElementById("id1").value, param2: document.getElementById("id2").value };
   uploader.start();
   e.preventDefault();
});

「param1」という名前は、「Title」など、より意味のある名前に変更できることに注意してください。おそらく、入力要素の「id」よりも意味のある id もあるでしょう。コントローラー側 (私は MVC 4 を使用しています) では、実装は次のようになります。

public ActionResult Upload(string name = "", int chunk = 0, int chunks = 0, string param1 = "", string param2 = "") {
   // ... your code here ...
}

例にとどまるには: パラメータ名を「param1」から「title」に変更した場合、当然、アクションのパラメータ名もそれに応じて「param1」から「title」に変更する必要があります。結果のコードは、ファイル ストリームの取得元も示しており、次のようになります。

public ActionResult Upload(string name = "", int chunk = 0, int chunks = 0, string title = "", string param2 = "") {
   // ... your code here ...
   System.Web.HttpPostedFileBase fileUpload = Request.Files[0];
   // ... and more of your code here ...
}
于 2012-10-01T08:40:06.830 に答える
0

HttpPostedFile私が理解している限り、3番目のパラメータとして渡す必要があると思います

于 2012-07-03T13:26:21.880 に答える