1

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

看法 :

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

查询:

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

我错过了一些东西,谢谢你的帮助。

4

3 回答 3

2

UploadifyfileData默认使用,所以:

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

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

fileObjName: 'foobar'

接着:

[HttpPost]
public string Upload(HttpPostedFileBase fooBar) 
{
    ...
}
于 2012-08-14T21:49:17.137 回答
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

于 2012-08-14T21:35:01.510 回答
1

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

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

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

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

于 2012-08-14T21:47:23.103 回答