Jquery上传 - MVC文件名不起作用

时间:2012-08-14 21:32:25

标签: javascript jquery asp.net asp.net-mvc asp.net-mvc-3

使用Jquery Uploadify,我无法将文件传递给控制器​​。

查看:

       <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..
    }

我遗失了一些东西,谢谢你的帮助。

3 个答案:

答案 0 :(得分: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'。它的配置方式,它相对于当前页面。因此,如果您在localhost / Somepage上,它将寻找/Somepage/Uploadify/uploadify.swf。您可以查看浏览器的“网络”标签,确保uploadify.swf不是404

答案 1 :(得分:2)

上传默认使用fileData,所以:

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

但您也可以使用fileObjName设置指定此名称:

fileObjName: 'foobar'

然后:

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

答案 2 :(得分:1)

不熟悉jquery Uploadify但是输入的名称是否应该与HttpPostedFileBase参数的名称匹配?如果不是那么无视。这是我唯一看到的东西。

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

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

更新:我看,Uploadify使用fileData作为参数。