MVC保存二进制到数据库,并显示文件的方法(图片显示)
MVC保存⼆进制到数据库,并显⽰⽂件的⽅法(图⽚显⽰)通过两篇⽂章解决了数据库存储图⽚并显⽰到View的⽅法:
其中,第⼀篇虽然有些混乱,但是对我有很⼤启发,⽽的第⼆篇写的就很笼统却⽐较了然,⼤体看⼀下就解决了令我不解的显⽰⽅法。
1.当然第⼀步是Img,我们在View⾥,给Img的⽂件来源,加上Action调⽤:
<img src=@Url.Action("GetImg", new { id = iii.DrId }) />
iii就是我们的对象实例了,这⾥,我们调⽤的是当前Controller的GetImg。
2.所以我们之后需要⼀个Action:
///<summary>
/// Action:获取图⽚⽂件
///</summary>
public FileContentResult GetImg(int id)
{
var anModel = zService.Find(id);
if (anModel != null)
{
tcl电视质量怎么样return File(anModel.DrImg, "image/jpg", anModel.DrId.ToString() + anModel.DrName);
}
else
{
return null;
}
}
文胸品牌前十大排名
这⾥的⽅法就是拷贝的我最开始提供的⽂章⾥的,并未有太多修改,注意⼀下“File”⽅法,有三个参数:
FileContentResult File(byte[] fileContents, string contentType, string fileDownloadName)
第⼀个当然就是读取出来的⽂件数据了,第⼆个是要以什么类型展⽰⽂件(MimeType),第三个就是要展⽰到页⾯的⽂件,是什么⽂件名这⾥要注意的是,参数3,如果这样⾃定义的名字,⽣成的结果好像是:『Id+Name+"~序号"』⽐如:361我是超⼈~3.jpg
3.⾄于怎么存进数据库,其实在链接⽂章1⾥有讲解,我⽤的是MVC和EF,代码就会类似于这样:
郑爽为什么被踢出娱乐圈3.1前台,View⾥加Form,注意“enctype”属性,看⽹上的⼏个⽂章,都说要加这个。
@using (Html.BeginForm("Add", "DoctorAdmin", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<fieldset>
<legend>DoctorInfo</legend>
<div class="editor-label">
<span>图⽚</span>
</div>
<div>
<input type="file" name="imgs" />
</div>
<div class="editor-label">
@Html.LabelFor(model => model.DrName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.DrName)
</div>
<p>
<input type="submit" value="确定" />表扬和鼓励孩子的寄语
</p>
</fieldset>
}
3.2后台,Action和⼀个获取图⽚⽅法。
[HttpPost]
public ActionResult Add(WXG_Doctor pModel)
{
if (pModel == null)
{
return HttpNotFound();
}
//获取上传图⽚
HttpPostedFileBase file1 = Request.Files[0];
int error1;
pModel.DrImg = FileUpDown.GetImageByte(out error1, file1, 1024 * 1024);
zService.Create(pModel);
return RedirectToAction("Add");
}
///<summary>
/
//获取图⽚内容
///</summary>
///<param name="pError">0:正常完成 1:⽂件⼤⼩异常。2:扩展名不⽀持。</param>
///<param name="pUpImage">要上传的⽂件</param>
///<param name="pFileLength">⽂件要⼩于这个⼤⼩</param>
///<returns>图⽚⽂件的内容</returns>
public static byte[] GetImageByte(out int pError, HttpPostedFileBase pUpImage, int pFileLength)
{
if (pUpImage.FileName != null)
{
//要上传的⽂件⼤⼩判断
安全饮食手抄报
int sFileLength = pUpImage.ContentLength;
if (sFileLength < 1 || sFileLength > pFileLength)
{
pError = 1;
return null;
}
//获取⽂件名
string sFilename = System.IO.Path.GetFileName(pUpImage.FileName).ToLower();
//获取upImage⽂件的扩展名
string extendName = System.IO.Path.GetExtension(sFilename);
//判断是否为图⽚格式
if (extendName != ".jpg" && extendName != ".jpeg" && extendName != ".gif" && extendName != ".bmp" && extendName != ".png")
{
pError = 2;
return null;
}
byte[] myData = new Byte[sFileLength];
pUpImage.InputStream.Read(myData, 0, sFileLength);
pError = 0;
return myData;
}
else
小学四年级数学下册期末试卷{
pError = 3;
return null;
}
}
}
其中,返回的状态那个参数,我不知会不会写的很2,⽽且具体的逻辑也缺乏健壮,请⼤家不要直接拿来就⽤了,酌情修改下。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。