Jquery upload - MVC 文件名不起作用

Jquery upload - MVC file name not working

本文关键字:文件名 不起作用 MVC upload Jquery      更新时间:2023-09-26

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

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

您可以使用:

[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。您可以检查浏览器的网络选项卡以确保上传.swf不是404

Uploadify 默认使用fileData,因此:

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

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

fileObjName: 'foobar'

然后:

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

不熟悉 jquery Uploadify 但是输入的名称不应该与 HttpPostedFileBase 参数的名称匹配吗?如果没有,那就忽略。这是我唯一看到的。

 <input type="file" name="file_upload" id="file_upload" />
 [HttpPost]
public string Upload(HttpPostedFileBase file_upload)
{          
  ...
}

更新:我明白了,上传使用文件数据作为参数。