MVC文件未被回发

时间:2017-07-12 20:11:21

标签: c# asp.net-mvc file-upload

HTTPPostedFileBase在控制器中始终为null。请查看并告诉我哪里错了。

Controller Post方法

 public ActionResult EditProfile(Contact model, HttpPostedFileBase picture, string currentPassword, string CurrentPasswordQ, string newPassword, string loginPwd, string currentPinQ, string newPin, int? selectedQuestion, string answer, bool pwdChange = false, bool questionChange = false, bool pinChange = false)
    {

我的表单标题

@using (Html.BeginForm("EditProfile", "CompanyAdmin", FormMethod.Post, new { enctype = "multipart/form-data", @data_ajax = "false" }))

{

我的文件输入

 <tr>
                                                <td class="label_form_div">
                                                    <label>Profile Picture</label>
                                                </td>
                                                <td>
                                                    <input type="file" name="picture" />
                                                </td>
                                            </tr>

请查看并查看是否可以找到问题所在。 谢谢

2 个答案:

答案 0 :(得分:0)

看起来你的代码是正确的,无论如何在控制器中尝试这种方式。它可能对您有所帮助:

 public ActionResult EditProfile(Contact model, string currentPassword, string CurrentPasswordQ, string newPassword, string loginPwd, string currentPinQ, string newPin, int? selectedQuestion, string answer, bool pwdChange = false, bool questionChange = false, bool pinChange = false)
    {

if (Request.Files != null && Request.Files.Count > 0)
{
    HttpPostedFileBase file = Request.Files[0];
    if (file != null && file.ContentLength > 0)
    {
             //other logic
    }
}

}

来源:https://stackoverflow.com/a/32219011/3397630

答案 1 :(得分:0)

请按照以下步骤操作。

步骤: - 1

@using (Html.BeginForm("FileUpload", "Home", FormMethod.Post, 
                            new { enctype = "multipart/form-data" }))
{  
    <label for="file">Upload Image:</label> 
    <input type="file" name="file" id="file" style="width: 100%;" /> 
    <input type="submit" value="Upload" class="submit" /> 
}

步骤: - 2

 public ActionResult FileUpload(HttpPostedFileBase file)
    {
        if (file != null)
        {
            string pic = System.IO.Path.GetFileName(file.FileName);
            string path = System.IO.Path.Combine(
                                   Server.MapPath("~/images/profile"), pic); 
            // file is uploaded
            file.SaveAs(path);

            // save the image path path to the database or you can send image 
            // directly to database
            // in-case if you want to store byte[] ie. for DB
            using (MemoryStream ms = new MemoryStream()) 
            {
                 file.InputStream.CopyTo(ms);
                 byte[] array = ms.GetBuffer();
            }

        }
    // after successfully uploading redirect the user
    return RedirectToAction("actionname", "controller name");
}