ASP.NET MVC上传文件

时间:2017-09-03 12:25:01

标签: c# asp.net-mvc

我试图将图片上传到文件夹。我已经在这里尝试了所有答案。 这是我的代码:

控制器:

[HttpPost]
public ActionResult UploadImage(HttpPostedFile uploadFile)
{
    if (uploadFile != null)
    {
        string ImageName = System.IO.Path.GetFileName(uploadFile.FileName);
        string Path = Server.MapPath("~/Content/Images/" + ImageName);
        // save image in folder
        uploadFile.SaveAs(Path);
        db.SaveChanges();
    }
    return View();
}

查看:

@using (Html.BeginForm("UploadImage", "Quizs", FormMethod.Post, new { enctype = "multipart/form-data " }))
{
    <div>
        <input type="file" name="uploadFile" /> <br />
        <input type="submit" value="Upload" />
    </div>
}

当我提交该表单时,我在Controller中得到NULL(uploadFile为null)。 请帮帮我,告诉我有什么问题。

谢谢

4 个答案:

答案 0 :(得分:2)

它应该是&#34; HttpPostedFileBase&#34;而不是&#34; HttpPostedFile&#34; ..

答案 1 :(得分:2)

谢谢大家的回答!

中的问题是额外的空间
new { enctype = "multipart/form-data " }

答案 2 :(得分:0)

我认为您的路由存在问题。您必须创建一个具有类型HttpPostedFileBase(不是HttpPostedFile)属性和uploadFile名称的模型,并将您的操作方法参数设置为该模型,这样的模型:

public class FileSaveModel
{
       public HttpPostedFileBase uploadFile {get; set;}
}

然后将您的操作参数更改为:

public ActionResult UploadImage(FileSaveModel model)

答案 3 :(得分:0)

我建议以下代码:

我的观看页面

在这里,我正在使用模型属性来上传图片"uploadFile"

@model Users
@using (Html.BeginForm("UploadImage", "Quizs", FormMethod.Post, new { enctype = "multipart/form-data" }))
        {
            @Html.AntiForgeryToken()
            @Html.ValidationSummary(true)
            <input type="file"  id="uploadFile" name="uploadFile">
             @Html.ValidationMessageFor(m => m.uploadFile)
            <button type="submit">Submit</button>
        }   

我的模特课程:

这是我的模型类,它有一个名为"uploadFile"的属性为HttpPostedFileBase DataType。

public partial class Users
    {
       public HttpPostedFileBase uploadFile { get; set; }
    }

我的控制器页面:

在这里,我使用Users模型类作为输入参数,它具有我的属性并使用UploadUserAvatar()方法在文件夹中上传一个名为"~/Content/Images"的路径中的图像

[HttpPost]
[ValidateAntiForgeryToken]
 public ActionResult Registration(Users user)
        {
           if (ModelState.IsValid)
          {
            UploadUserAvatar(user.uploadFile);
            return View();
          }       
        }
  protected void UploadUserAvatar(HttpPostedFileBase image)
        {
            HttpPostedFileBase file = image;
            if (file != null)
            {
                if (!Directory.Exists(Server.MapPath("~/Content/Images")))
                    Directory.CreateDirectory(Server.MapPath("~/Content/Images"));
                string _fileName = Path.GetExtension(file.FileName);
                string _path = System.IO.Path.Combine(Server.MapPath("~/Content/Images/"), _fileName);
                file.SaveAs(_path);

            }
      }