2012-12-13 85 views
0

使用uploadify自動提交用戶文件,在我的控制器方法中Request.Files [「Name」]保持返回null,但request.form不爲null,我可以看到當我設置一個斷點並調試它時,在request.form文件中。我錯過了什麼嗎?我在mvc2上測試這個,但我打算在mvc4上使用它。Request.Files [「」]保持返回null

<link href="../../Content/uploadify.css" rel="stylesheet" type="text/css" /> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script> 
<script src="../../Scripts/jquery.uploadify.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    $(function() { 
     $('#file_upload').uploadify({ 
      'swf': '/Content/uploadify.swf', 
      'uploader': '/Home/UploadFile', 
      'auto': true 


      // Your options here 
     }); 
    }); 
</script> 
</head> 
    <body>   
    <%--<% using (Html.BeginForm("UploadFile", "Home", FormMethod.Post, 
new { enctype = "multipart/form-data" })) 
{ %>--%> 
    <input type="file" name="file_upload" id="file_upload" style="margin-bottom: 0px" /> 

<%-- <% } %>--%> 

控制器的方法:

[HttpPost] 
    public ActionResult UploadFile(HttpPostedFileBase file) 
    {   
     var theFile = Request.Files["file_upload"]; 
     return Json("Success", JsonRequestBehavior.AllowGet); 
    } 

如果我添加一個提交按鈕,然後提交它,它會的工作,雖然。我需要自動,雖然沒有提交按鈕。

+0

我對uploadify不熟悉。但是,看起來您有表單時,您明確使用POST方法,並且操作方法僅響應POST請求。 uploadify是否可以做GET? –

回答

2

IIRC Uploadify使用fileData作爲參數。所以:

var theFile = Request.Files["fileData"]; 

甚至更​​好:

[HttpPost] 
public ActionResult UploadFile(HttpPostedFileBase fileData) 
{   
    // The fileData parameter should normally contain the uploaded file 
    // so you don't need to be looking for it in Request.Files 
    return Json("Success", JsonRequestBehavior.AllowGet); 
} 

當然,如果你不喜歡這個名字,你可以總是使用fileObjName設置自定義。

+0

啊你的權利。謝謝。我沒有看到任何關於在他們的教程中做的事情。欣賞它。爲什麼它是這樣的呢? – TMan

+0

那麼,他們不得不選擇一些默認值來發送文件,不是嗎?爲什麼他們選擇'fileData'而不是'foo_bar_baz'是一個難以回答的問題。正如你在['multipart/form-data'](http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2)規範中所知道的那樣(你無疑已經讀過熟悉如果您正在進行Web開發),每個上傳的文件都與服務器可用來從請求中檢索的唯一密鑰相關聯。 –

+0

是的,我是新來的文件上傳在web開發..我做了它在桌面開發這是更海峽前進 – TMan