2012-05-01 102 views
2

所以我試圖用Asp.NET MVC實現Uploadifive 1.0。使用調試器模式,我知道上傳操作已成功傳遞給控制器​​,同時也傳遞了服務器變量。但是,HttpPostedFileBase變量fileData始終爲空。我在谷歌無處不在,找不到答案。我發現變量必須被稱爲fileData。這雖然沒有幫助。使用Asp.Net MVC獲取Null值爲HttpPostedFileBase使用最新的Uploadifive

這裏的視圖的一部分:

<form action="<%: Url.Action("SaveFiles", "File") %>" enctype="multipart/form-data"> 
    <input type="file" name="file_upload" id="file_upload" /> 
</form> 

<script type="text/javascript"> 
    (function ($) { 
     $(document).ready(function() { 
      $('#file_upload').uploadifive({ 
       'method': 'post', 
       'uploadScript': 'SaveFiles', 
       'formData': {'path' : 'documents'} 
      }); 
     }); 
    })(jQuery); 
</script> 

這裏的控制器動作:

[HttpPost] 
public ActionResult SaveFiles(HttpPostedFileBase fileData) 
{ 
    string uploadFolder = Request.ServerVariables.Get("HTTP_X_PATH"); 
    if(string.IsNullOrWhiteSpace(uploadFolder)) 
     return Json(JsonMessageManager.GetFailureMessage("No upload folder was selected")); 

    if (fileData != null && fileData.ContentLength > 0) 
    { 
     var fileName = Path.GetFileName(fileData.FileName); 
     var path = Path.Combine(Server.MapPath("~/Content/" + uploadFolder), fileName); 
     fileData.SaveAs(path); 
     return Json(true); 
    } 
    return Json(false);    
} 

任何指針或幫助將不勝感激。我感到失落。

回答

1

我有與Uploadifive完全相同的問題,所以我發佈在現有的線程上的Uploadify論壇(可能是你的)。作者已經發布了對我下載的Uploadifive插件的更新,現在這對我來說工作得很好。實際上,它的工作原理與Uploadify一樣,用於包含「Request.Forms」中提供的其他表單數據,並且它不再將「X_」預先添加到附加表單數據中。我會建議你嘗試新版本,看看你如何去。

見這裏的討論:http://www.uploadify.com/forum/#/discussion/8223/no-files-attached-to-request

+0

感謝您對我的帖子的回覆。我已經注意到uploadifive已經更新了,但它變成了uploadifive並不是我網站的最佳解決方案,所以我下載了plupload,因爲它提供了完整的瀏覽器支持,不僅僅是FF和Chrome。 – Sebbo

+0

我有同樣的問題。早些時候我使用1.0.2版本,並將其更新到1.2.2。現在問題解決了。謝謝tkha007 – cp100

0

的關鍵是沒有命名的變量「FILEDATA」,而是要確保你的控制器和UploadiFive都認爲它具有相同的名稱。例如:

的Javascript:

$(document).ready(function() { 
    $('#fileUploadDiv').uploadifive({ 
     'uploadScript': '/File/Upload', 
     'fileObjName' : 'file' 
    }); 
}); 

C#控制器:

[HttpPost] 
    public PartialViewResult Upload(HttpPostedFileBase file) 
    { 
     var name = file.FileName; 
     var stream = file.InputStream; 
     // etc... 
    } 

只要fileObjName具有相同的名稱,在C#控制器參數,你應該罰款。我用各種名稱測試它,如果名稱不匹配,則參數爲空,當它們匹配時它就像魅力一樣工作。

如果參數仍然不起作用,您應該可以使用控制器內部的this.Request.Files訪問數據。無論參數名稱如何,數據都會通過。

相關問題