2011-06-22 15 views
0

我想用jqueryform插件上传文件。我必须文件上传控件,但第二个不能上传?用jqueryform插件上传

<div> 
    <h2> 
     Upload test</h2> 
    <script src="../../Scripts/jquery-1.5.1.min.js" type="text/javascript"></script> 
    <script src="../../Scripts/jquery-ui-1.8.12.custom.min.js" type="text/javascript"></script> 
    <script src="../../Scripts/jqueryform.js" type="text/javascript"></script> 
    <script src="../../Scripts/jblock.js" type="text/javascript"></script> 
    <script type="text/javascript"> 

     $(document).ready(function (event) { 

      $(function() { 
       $("#ajaxUploadForm").ajaxForm({ 
        iframe: true, 
        dataType: "json", 
        beforeSubmit: function() { 
         $("#ajaxUploadForm").block({ message: ' Uploading Image' }); 
        }, 
        success: function (result) { 
         $("#ajaxUploadForm").unblock(); 
         $("#ajaxUploadForm").resetForm(); 
         //$.growlUI(null, result.message); 
         if (result.message != 'Success') { 
          alert(result.message); 
         } 
         else { 

         } 
        }, 
        error: function (xhr, textStatus, errorThrown) { 
         $("#ajaxUploadForm").unblock(); 
         $("#ajaxUploadForm").resetForm(); 

        } 
       }); 
      }); 
     }); 
    </script> 
    <form id="ajaxUploadForm" action="<%= Url.Action("Upload", "Home")%>" method="post" 
    enctype="multipart/form-data"> 
    <input type="file" name="file" /> 

    <input type="file" name="file2" /> 

    <input id="ajaxUploadButton" type="submit" value="upload file" /> 
    </form> 
</div> 


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

    public FileUploadJsonResult Upload(HttpPostedFileBase file) 
    { 
     if (file == null) 
     { 
      return new FileUploadJsonResult { Data = new { message = "error" } }; 
     } 

     if (file.ContentLength > 0) 
     { 
     //save file or something 
     } 

     return new FileUploadJsonResult { Data = new { message = string.Format("success") } }; 
    } 


public class FileUploadJsonResult : JsonResult 
{ 
    public override void ExecuteResult(ControllerContext context) 
    { 
     this.ContentType = "text/html"; 
     context.HttpContext.Response.Write("<textarea>"); 
     base.ExecuteResult(context); 
     context.HttpContext.Response.Write("</textarea>"); 
    } 
} 

回答

2

你必须分别命名为filefile1表单上的两个文件输入。您处理上载的控制器操作仅有一个名为file的参数HttpPostedFileBase。所以,你可以添加第二个:

public FileUploadJsonResult Upload(
    HttpPostedFileBase file, 
    HttpPostedFileBase file1 
) 
{ 
    if (file == null || file1 == null) 
    { 
     return new FileUploadJsonResult { Data = new { message = "error" } }; 
    } 

    if (file.ContentLength > 0) 
    { 
     //save file or something 
    } 

    if (file1.ContentLength > 0) 
    { 
     //save the second file or something 
    } 

    return new FileUploadJsonResult { Data = new { message = string.Format("success") } }; 
} 

或者,如果你想处理多个文件,你可以给他们你的窗体上的同一个名字:

<input type="file" name="files" /> 
<input type="file" name="files" /> 
<input type="file" name="files" /> 
<input type="file" name="files" /> 
<input type="file" name="files" /> 
... 

,然后你的控制器动作可以采取列表文件:

public FileUploadJsonResult Upload(IEnumerable<HttpPostedFileBase> files) 
{ 
    if (files) 
    { 
     return new FileUploadJsonResult { Data = new { message = "error" } }; 
    } 

    foreach (var file in files) 
    { 

     if (file.ContentLength > 0) 
     { 
      //save file or something 
     } 
    } 

    return new FileUploadJsonResult { Data = new { message = string.Format("success") } }; 
} 

您可以检出following blog post关于ASP.NET MVC上传文件。