在MVC中上传和显示来自数据库的多个图像

时间:2016-01-02 03:54:56

标签: c# asp.net-mvc image-uploading

我正在使用ASP.NET MVC,我正在尝试将多个图像上传到数据库,然后在视图中显示它们。我相信上传过程正常,但是当我尝试显示图片时,只显示替代文字,并且Chrome调试中找不到资源错误。

这就是我的视图在我的视图中的显示方式

@model IList<InspectionPhoto>

<div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
    <h4 class="modal-title" id="myModalLabel">Photo Management</h4>
</div>

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    <div class="modal-body">
        <div class="form-horizontal">

            @if (Model.Count > 0)
            {
                <div class="row">
                    @for (var i = 0; i < Model.Count(); i++)
                    {
                        <div class="row">
                            <div class="col-md-6">
                                <img src="@Url.Action( "ShowPhoto", "Inspection", new { id = Model[i].PhotoID } )" alt="Image not available" />
                            </div> 
 //continues

显示照片方法:

public Bitmap ShowPhoto(int id)
{
    InspectionPhoto image = db.InspectionPhotoes.Find(id);
    var result = (Bitmap)((new ImageConverter()).ConvertFrom(image.ImageBytes));
    return result;
}

show photo方法位于我的Inspections控制器中,因为Photo视图是在检查视图中单击按钮时显示的模态局部视图。

非常感谢任何帮助。如果需要更多信息,请告诉我。

3 个答案:

答案 0 :(得分:2)

ShowPhoto返回Bitmap,但应返回File,如下所示。如果您的图像保存得当,那么下面的图像应该可以正常工作。

public ActionResult ShowPhoto(int id)
{
    InspectionPhoto image = db.InspectionPhotoes.Find(id);
    byte[] result = image.ImageBytes;
    return File(result, "image/png");
}

答案 1 :(得分:0)

你的ShowPhoto方法正在返回一个Bitmap,你试图写入的是html的img src标记,它正在期待一个url-string。您应该修改ShowPhoto函数,而不是返回与已上载图像关联的URL。

答案 2 :(得分:0)

我认为你应该返回FileContent

{{1}}