0

当我上传多个文件(每个 blueimp jquery 文件上传)时,每个文件都会输入一次 [httppost] 操作。是否可以使用枚举文件容器指定一个且只有一个回发以进行迭代?

看法:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="@Url.Content("~/Scripts/jquery.ui.widget.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.iframe-transport.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.fileupload.js")" type="text/javascript"></script>

<input id="fileupload" type="file" name="files" multiple="multiple"/>

控制器:

public ActionResult Index()
{
    return View();
}

[HttpPost]
public ActionResult Index(IEnumerable<HttpPostedFileBase> files)
{
    // This is posted back for every file that gets uploaded...I would prefer it only post back once
    // with a collection of files to iterate.  Is this possible?
    foreach (var file in files) // There is only ever one file in files
    {
        var filename = Path.Combine(Server.MapPath("~/App_Data"), file.FileName);
        file.SaveAs(filename);
    }
    return View();
}
4

1 回答 1

1

jquery 代码:动态创建文件上传数量。

<script type="text/javascript">
$(function() {
    $("#num").append("<option value='0'>select file num...</option>");
    for (var i = 1; i <= 20; i++) {
        $("#num").append("<option value='" + i + "'>" + i + "</option>");
    }
    $("#num").change(function() {
        var num= $("#num").val();
        $("#files").html("");
        for (var i = 0; i < num; i++) {
            $("#files").append("<p><input type='file' name='file_"+i+"'></p>");
        }
    });
});
</script>

// Html codes
<% Html.BeginForm("Upload", "Home", FormMethod.Post, new { @enctype = "multipart/form-data", @id =    "form" }); %>
    <select id="num"></select>
    <div id="files"></div>
    <input type="submit" value="Submit"><%= ViewData["result"] %>
<% Html.EndForm(); %>

控制器代码:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Upload()
{
  foreach (string name in Request.Files)
  {
    var file = Request.Files[name];
    file.SaveAs(Server.MapPath("~/" + file.FileName));
  }
  ViewData["result"] = "success.";
  return View();
}
于 2012-04-04T19:24:20.273 回答