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

如果您需要为上传的每个文件传递不同的参数,值得看看在 plupload 中为每个文件传递动态参数 它正在与我的 MVC4 项目一起使用。

于 2012-10-28T22:53:18.273 回答
3

首先,快速浏览一下官方文档

我很快找到了以下 api 属性:

多部分参数

带有参数的对象名称/值集合与多部分文件一起发布。

那么让我们看一些示例代码:

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作为第三个参数传递

于 2012-07-03T13:26:21.880 回答