PDA

View Full Version : سوال: چگونه میتوان یک عکس رو داخل دیتابیس ذخیره کرد ؟



EBRAHIMIEKOKDARAGHI
دوشنبه 18 اسفند 1393, 10:40 صبح
با سلام خدمت اساتید محترم
من در لایه مدل یک کلاس دارم به شکل زیر
using System.Data.Entity;using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Objects;
using System.Data.Objects.DataClasses;




namespace Maintenance_Pm.Models
{
public class Mashin
{
[Required]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption .Identity)]
public int number { get; set; }
[Required]
[Display(Name="کد ماشین")]
[StringLength(50,MinimumLength=1)]
public string MashinID { get; set; }
[Required]
[Display(Name = "نام ماشین")]
[StringLength(50, MinimumLength = 1)]
public string MashinName { get; set; }
[Display(Name = "نام شرکت سازنده ")]
[StringLength(100, MinimumLength = 1)]
public string MashinCoName { get; set; }
[Display(Name = "آدرس شرکت سازنده ")]
[StringLength(150, MinimumLength = 1)]
public string AddressCo { get; set; }
[Display(Name = "مشخصات سیستم برق")]
[StringLength(150, MinimumLength = 1)]
public string Bargh { get; set; }
[Display(Name = "مشخصات سیستم مکانیک")]
[StringLength(150, MinimumLength = 1)]
public string Mekanik { get; set; }
[Display(Name = "تاریخ ساخت")]
[StringLength(10, MinimumLength = 1)]
public string DateMake { get; set; }
[Display(Name = "تاریخ نصب")]
[StringLength(10, MinimumLength = 1)]
public string DateInstalltion { get; set; }
[Display(Name = "عکس ماشین")]
[Column(TypeName="Image")]
public byte[] Img { get; set; }


}

}
در داخل لایه view برای فیلد img چه کدی روباید بنویسیم لطفا" راهنمایی کنید ضروریه !!!
@model Maintenance_Pm.Models.Person

@{
ViewBag.Title = "Create";
Layout = "~/Views/Shared/_Layout.cshtml";
}


<h2>Create</h2>


@using (Html.BeginForm()) {
@Html.ValidationSummary(true)


<fieldset>
<legend>Person</legend>


<div class="editor-label">
@Html.LabelFor(model => model.Id)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Id)
@Html.ValidationMessageFor(model => model.number)
</div>


<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>


<div class="editor-label">
@Html.LabelFor(model => model.Family)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Family)
@Html.ValidationMessageFor(model => model.Family)
</div>


<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}


<div>
@Html.ActionLink("Back to List", "Index")
</div>


@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}

aroshanzamir
دوشنبه 18 اسفند 1393, 10:58 صبح
با سلام دوست گرامی :
راه های متعددی برای انجام این کار وجود داره مثلا یکیش :

شما یک یک input با type=file را توی فرم قرار بده و در ضمن در قسمت htmlAttribute نوع encrypt را هم مشخص بکن و برابر با multipart قرار بده و بعد در پارامتر ورودی متد اکشن یک پارامتر با همان نام که برای input تعین کردیم از نوع HttpPostedFileBase تعین می کنیم :

مثلا :

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



در کنترولر :

[HttpPost]
public ActionResult Index(HttpPostedFileBase file)
{
var fileName = file.FileName;
file.SaveAs(Server.MapPath("مسیر ذخیره سازی"));
return View();
}



تمام !

EBRAHIMIEKOKDARAGHI
دوشنبه 18 اسفند 1393, 11:28 صبح
با تشکر از جوابتون
فقط من میخواستم عکس در دیتابیس ذخیره بشه

saeed31641
دوشنبه 18 اسفند 1393, 12:41 عصر
ٰ[HttpPost]
[AllowUploadSpecialFilesOnly(".jpg,.gif,.png")]
[ValidateAntiForgeryToken()]
public ActionResult Creategroup(HttpPostedFileBase file, groupgallery modal)
{
{
SiteSession siteSession = this.CurrentSiteSession;
if (siteSession == null && Session["admin"] != "admin")
{
return RedirectToAction("Index", "../Home", new { culture = "value" });
}

file = Request.Files["ImageData"];
if (file.ContentLength > 150000)
{
TempData["msg"] = "اندازه فایل حداقل 50 کیلو باید باشد";
return RedirectToAction("Listgallery", "Gallery");
}

var supportedTypes = new[] { "JPG", "jpg", "jpeg", "png" };

var fileExt = System.IO.Path.GetExtension(file.FileName).Substri ng(1);

if (!supportedTypes.Contains(fileExt))
{
TempData["msg"] = "فرمت فایل مجاز نمی باشد";
return RedirectToAction("Listgallery", "Gallery");
}

savepic service = new savepic();
int i = service.UploadImageInDataBasegroupgaallry(file, modal);
if (i == 0)
{
TempData["msg"] = "ثبت گروه با موفقیت انجام شد";
return RedirectToAction("Listgallery", "Gallery");
}
else
{
TempData["msg"] = "ثبت گروه با موفقیت انجام نشد";
return RedirectToAction("Listgallery", "Gallery");
}
}
}

aroshanzamir
دوشنبه 18 اسفند 1393, 13:41 عصر
سلامی دوباره دوست من :
باز هم فرق چندانی نمی کنی اگر به خصوصیات فایل نگاه کنی میبینی یک property با نام InputStream داره ...دیگه تموم
فقط میای تو کلاس یک فیلد را از نوع آرایه ای از بایت ها در نظر می گیری .. بعد مقدار stream را میگیری تبدیل به بایت می کنی ! تمام


Stream fs = file.InputStream;
BinaryReader br = new BinaryReader(fs);
Byte[] bytes = br.ReadBytes((Int32)fs.Length);

mehdin69
پنج شنبه 06 فروردین 1394, 13:12 عصر
سلام بجای اینهمه دردسر از جداول FileTable استفاده کنین