2012-08-14 59 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) 
{ 
    ... 
}