首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Form enctype="multipart/form-data“不工作

Form enctype="multipart/form-data“不工作
EN

Stack Overflow用户
提问于 2013-08-21 15:17:36
回答 3查看 12.1K关注 0票数 2

我已经完成了使用表单将照片上传到MVC (照片作为参数发送给AJAX调用)控制器的测试,现在需要执行相同的操作,但需要进行修改:

有效的原始源是:

代码语言:javascript
复制
<form action="/Home/Upload"  method="post" enctype="multipart/form-data">

<label for="photo">Photo:</label>
<input type="file" name="photo" id="photo" />

<input id="uploadbtn" type="submit" value="Upload" />
</form>

和来自控制器的操作代码:

代码语言:javascript
复制
    [HttpPost]
    public ActionResult Upload(HttpPostedFileBase photo)
    {
        // Verify that the user selected a file
        if (photo != null && photo.ContentLength > 0)
        {
            // extract only the fielname
            var fileName = Path.GetFileName(photo.FileName);
            // store the file inside ~/App_Data/uploads folder
            var path = Path.Combine(Server.MapPath("~/C:/poze"), fileName);
            photo.SaveAs(path);

        }
        return Json(new { Success = true });
    }

这行得通,但在这种情况下行不通:

代码语言:javascript
复制
@using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{

  <div class="control-group">
    <label class="control-label" for="photo">Photo:</label>
    <div class="controls">
        <input type="file" name="photo" id="photo" />
    </div>
  </div>
}

动作代码是:

代码语言:javascript
复制
public ActionResult EditModule(INT ID, string Description, HttpPostedFileBase photo)
{
    if (photo != null && photo.ContentLength > 0)
    {
        // extract only the fielname
        var fileName = Name + ".png";
        // store the file inside ~/App_Data/uploads folder
        var path = Path.Combine(Server.MapPath("~/Content/Module Previews"), fileName);
        photo.SaveAs(path);
    }

    else
    {
        Status += "Error image";
        Success = false;
    }
}

当我调试EditModule时,照片的值是空的。我确信javascript和ajax调用没有问题。

EN

回答 3

Stack Overflow用户

发布于 2013-08-21 15:24:13

您已将控制器和操作名称设置为null,因此表单不知道要发送到何处。将前两个参数更改为操作名称和控制器名称:

代码语言:javascript
复制
@using (Html.BeginForm("Upload", "Home", FormMethod.Post, 
                                   new { enctype = "multipart/form-data" }))
票数 7
EN

Stack Overflow用户

发布于 2013-08-21 15:28:43

当我调试EditModule时,照片的值为空。我确信javascript和ajax调用没有问题。

您不能使用ajax上传二进制文件。你要么使用<IFRAME>,要么使用Flash插件。

有关更多信息,请参阅此答案:https://stackoverflow.com/a/6462673/70386

票数 2
EN

Stack Overflow用户

发布于 2014-11-14 08:51:09

当你把null放在action和controller中时,MVC使用当前的action和controller。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18351101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档