在.NET MVC框架中,将上传的图片保存到数据库并在视图中显示涉及几个步骤。以下是详细的步骤和示例代码:
首先,创建一个模型来表示存储在数据库中的图片。
public class ImageModel
{
public int Id { get; set; }
public byte[] ImageData { get; set; }
public string ImageMimeType { get; set; }
}
在控制器中创建动作来处理图片上传和显示。
public class ImageController : Controller
{
private readonly ApplicationDbContext _context;
public ImageController(ApplicationDbContext context)
{
_context = context;
}
// GET: /Image/Upload
public ActionResult Upload()
{
return View();
}
// POST: /Image/Upload
[HttpPost]
public ActionResult Upload(HttpPostedFileBase file)
{
if (file != null && file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var mimeType = file.ContentType;
using (var ms = new MemoryStream())
{
file.InputStream.CopyTo(ms);
var image = new ImageModel
{
ImageData = ms.ToArray(),
ImageMimeType = mimeType
};
_context.Images.Add(image);
_context.SaveChanges();
}
}
return RedirectToAction("Index");
}
// GET: /Image/Display/5
public ActionResult Display(int id)
{
var image = _context.Images.Find(id);
if (image != null)
{
return File(image.ImageData, image.ImageMimeType);
}
return HttpNotFound();
}
}
创建上传图片的视图和显示图片的视图。
Upload.cshtml:
@using (Html.BeginForm("Upload", "Image", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="file" />
<input type="submit" value="Upload" />
}
Display.cshtml:
<img src="@Url.Action("Display", "Image", new { id = Model.Id })" alt="Uploaded Image" />
原因:可能是图片路径错误或数据库中的二进制数据损坏。 解决方法:
Display
动作正确返回图片数据。ImageData
字段是否正确存储了图片的二进制数据。原因:上传的文件过大,导致内存不足。 解决方法:
web.config
中增加httpRuntime
的maxRequestLength
和executionTimeout
设置。<configuration>
<system.web>
<httpRuntime maxRequestLength="2097152" executionTimeout="3600" />
</system.web>
</configuration>
通过以上步骤和示例代码,你应该能够在.NET MVC应用中实现图片的上传、存储和显示。如果遇到其他具体问题,可以根据错误信息进一步调试和解决。
领取专属 10元无门槛券
手把手带您无忧上云