我想在文件夹图片中上传文件 我将ASP.NET与MVC4和razor一起使用。
我的观点中有这个:
<div class="editor-label">
@Html.Label("Descriptif")
</div>
<div class="editor-field">
<input type="file" name="fDescriptif" />
@Html.ValidationMessageFor(model => model.fDescriptif)
</div>
[...]
<p>
<input type="submit" value="Create" />
</p>
在我的控制器中:
[HttpPost]
public ActionResult Create(formation formation)
{
if (ModelState.IsValid)
{
db.formations.Add(formation);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(formation);
}
在我的模特中:
public string fDescriptif { get; set; }
我不知道在我的文件夹中上传我的文件必须做些什么&#34; image&#34;并在我的数据库中保存我的文件的名称。当我验证我的表格时,它是我保存的完整路径。
答案 0 :(得分:1)
在您的观点中,请确保您已将enctype = "multipart/form-data"
添加到form
标记中,然后尝试这样:
@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post, new { enctype = "multipart/form-data", id = "frmID" }))
您可以在Controller Action AS中获取文件:
[HttpPost]
public ActionResult Create(formation formation,HttpPostedFileBase file)
{
if (ModelState.IsValid)
{
// Get your File from file
}
return View(formation);
}
答案 1 :(得分:0)
你可以找到很多像这样的问题,即使这个问题已经给出了很多答案。
以下是2个链接。你应该在这个链接中找到你的答案。还有更多的其他答案在SO上。只是google它,你会发现它们。
答案 2 :(得分:0)
您的表单不包含除文件之外的任何输入标记,因此在您的控制器操作中,除了上传的文件(这就是发送到服务器的所有内容)之外,您不能指望获得任何其他内容。实现此目的的一种方法是包含一个隐藏的标记,其中包含模型的ID,允许您从发布的控制器操作中的数据存储区中检索它(如果用户不应该修改模型,请使用此标记但只需附上一个文件):
@using (Html.BeginForm("ACTION", "CONTROLLER", FormMethod.Post, new { enctype = "multipart/form-data" }))
@Html.TextBoxFor(m => m.File, new { @type = "file" })
AND IN CONTROLLER
[HttpPost]
public ActionResult ACTION(ViewModels.Model taskModel)
{
string path = @"D:\Projects\TestApps\uploadedDocs\";
if (taskModel.File != null) {
taskModel.File.SaveAs(path +taskModel.TaskTitle
+ taskModel.File.FileName);
newUserProject.DocumentTitle = taskModel.TaskTitle
+ taskModel.File.FileName;
newUserProject.DocumentPath = path + taskModel.File.FileName;
}
}
答案 3 :(得分:-2)
<form action="" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<input type="submit" />
</form>
你的控制器应该如下
[HttpPost]
public ActionResult Index(HttpPostedFileBase file)
{
if (file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
file.SaveAs(path);
}
return RedirectToAction("Index");
}