是否可以指定Jquery File Upload仅回发一次(对于多个文件)?

时间:2012-04-03 23:25:27

标签: jquery asp.net asp.net-mvc asp.net-mvc-3 file-upload

当我上传多个文件时(每个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();
}

1 个答案:

答案 0 :(得分:1)

jquery代码:动态创建fileupload num。

<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();
}