我试图将图片上传到文件夹。我已经在这里尝试了所有答案。 这是我的代码:
控制器:
[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)。 请帮帮我,告诉我有什么问题。
谢谢
答案 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);
}
}