2012-08-14 88 views
1

使用Jquery Uploadify,我無法將文件傳遞給控制器​​。Jquery上傳 - MVC文件名不起作用

查看:

 <input type="file" name="file_upload" id="file_upload" /> 

的Jquery:

<script type="text/javascript"> 
    $(function() { 

     var uploadUrl = $('#file_upload').data(); 

     $('#file_upload').uploadify({ 

      'auto': true, 
      'script': uploadUrl,    
      'swf': 'Uploadify/uploadify.swf', 
      'uploader': '/ControllerName/Upload',    
      'debug': true 

     }); 
    }); 
</script> 

控制器

[HttpPost] 
    public string Upload(HttpPostedFileBase file) 
    {   
     //"file" = null is being passed from the view to the controller. 
     //code.. 
    } 

我失去了一些東西,感謝您的幫助。

回答

2

您可以使用:

[HttpPost] 
public string Upload(HttpPostedFileBase FileData) { 
} 

[HttpPost] 
public ActionResult Upload() { 
    if (Request.Files.Count > 0 && Request.Files[0].ContentLength > 0) { 
     HttpPostedFileBase postedFile = Request.Files[0]; 
     // Do something with it 
    } 
} 

如果這些都不是工作,你的動作是不是在所有的發射(即嘗試調試,看看此方法中的斷點被擊中),那麼你的問題很可能是'腳本'的價值 - 你是否在虛擬目錄下運行?如果是這樣,你需要把目錄的名字放在前面。 Uploadify使用絕對路徑。

您可能還想檢查swf路徑swf': 'Uploadify/uploadify.swf'。它的配置方式與當前頁面相關。所以,如果你在本地主機/ Somepage它會尋找/Somepage/Uploadify/uploadify.swf。您可以檢查瀏覽器網絡選項卡,以確保uploadify.swf不是404

+0

控制器更這裏通常使用..對不起..它是一個真正的控制器名稱..我編輯它.. – ZVenue 2012-08-14 21:38:36

+0

你的第一個選擇與我有什麼不同? – ZVenue 2012-08-14 21:40:16

+0

是的,它擊中控制器..我嘗試從表單中的另一個值傳遞formdata ..那很好。問題在於傳遞文件。 – ZVenue 2012-08-14 21:43:46

1

不熟悉jquery Uploadify但不應該輸入的名稱匹配HttpPostedFileBase參數的名稱嗎?如果不是,那就不要理會。這是我看到的唯一的東西。

<input type="file" name="file_upload" id="file_upload" /> 

[HttpPost] 
public string Upload(HttpPostedFileBase file_upload) 
{   
    ... 
} 

update:I See,Uploadify使用fileData作爲參數。

2

Uploadify使用fileData默認情況下,所以:

[HttpPost] 
public string Upload(HttpPostedFileBase fileData) 
{ 
    ... 
} 

但你也可以使用fileObjName設置指定此名稱:

fileObjName: 'foobar' 

然後:

[HttpPost] 
public string Upload(HttpPostedFileBase fooBar) 
{ 
    ... 
}