【发布时间】:2017-01-04 01:54:17
【问题描述】:
如果有人可以帮助我,我将不胜感激。我在视图中的表单中输入了文件控件,当有人选择图片并单击表单上的提交按钮时,该文件必须保存在应用程序的 /Pictures 文件夹中,并且文件路径需要保存在 SQL 数据库中字符串(如:/图片/文件名)。
模型类部分:
[Table("Automobil")]
public partial class Automobil
{ .....
[Required]
[StringLength(30)]
public string Fotografija{ get; set; }
......
查看(创建)文件部分:
@using (Html.BeginForm("Create", "Automobili", FormMethod.Post, new { enctype = "multipart/form-data" }))
....
<div class="form-group">
<div class="editor-field">
@Html.TextBoxFor(model => model.Fotografija, new { type = "file" })
@Html.ValidationMessageFor(model => model.Fotografija, "", new { @class = "text-danger" })
</div>
</div>
....
控制器部分:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "AutomobilID,Marka,Model,Godiste,Zapremina_motora,Snaga,Gorivo,Karoserija,Fotografija,Opis,Cena,Kontakt")] Automobil automobil)
{
if (ModelState.IsValid)
{
db.Automobils.Add(automobil);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(automobil);
}
我需要做什么才能将照片(Fotografija)保存在应用程序文件夹 Pictures 中,以及 SQL 库中的文件路径(如 /Pictures/filename)?
提前感谢您对初学者的帮助。
【问题讨论】:
-
不要将完整路径放入数据库 - 只需放入文件名。这样,如果您重新定位或重命名包含文件夹,您将不需要进行任何数据更改,您只需要在一个地方更改代码(假设您的代码结构正确)
-
当我只使用上面的代码时,我得到验证错误,图片必须有多达 30 个字符。此外,它不会将图片本身保存在应用程序中。
-
删除
[StringLength(30)] -
还是不行。如果我删除 [StringLength(30)] 代码会通过,但图片会以“System.Web.HttpPostedFileWrapper”的名称保存在 SQL 数据库中,并且图片文件不会保存在应用程序中。所以我在数据库中保存url肯定是缺少一些东西,很明显,在应用程序中保存图片文件的代码也丢失了。
-
Почему бы тебе не задать свой вопрос на русском форуме?
标签: c# jquery html asp.net asp.net-mvc