How to display images in MVC

后端 未结 1 751
天命终不由人
天命终不由人 2020-12-07 06:51

I have uploaded photos successfully in \"Content/Student/Photo\" folder of my project but can\'t display them in Index view.

here is my short code:

相关标签:
1条回答
  • 2020-12-07 07:09

    Try this.

    Model:

    public byte[] ImageData { get; set; }
    
    [HiddenInput(DisplayValue = false)]
    public string ImageMimeType { get; set; }
    

    View:

    @using (Html.BeginForm("Edit", "Admin", FormMethod.Post, 
    new { enctype = "multipart/form-data" })) {
    
    @Html.EditorForModel()
        <div class="editor-label">Image</div>
            <div class="editor-field">
                @if (Model.ImageData == null) {
                    @:None
                } else {
                    <img width="150" height="150"
                src="@Url.Action("GetImage", "Product", new { Model.ProductID })" />
                }
            <div>Upload new image: <input type="file" name="Image" /></div>
        </div>        
        <input type="submit" value="Save" />
        @Html.ActionLink("Cancel and return to List", "Index")
    }
    

    Controller:

    [HttpPost]
    public ActionResult Edit(Product product, HttpPostedFileBase image) {
    if (ModelState.IsValid) {
        if (image != null) {
            product.ImageMimeType = image.ContentType;
            product.ImageData = new byte[image.ContentLength];
            image.InputStream.Read(product.ImageData, 0, image.ContentLength);
        }
        repository.SaveProduct(product);
        TempData["message"] = string.Format("{0} has been saved", product.Name);
        return RedirectToAction("Index");
        } else {
            // there is something wrong with the data values
            return View(product);
        }
    }
    
    
    public void SaveProduct(Product product) {
        if (product.ProductID == 0) {
            context.Products.Add(product);
        } else {
            Product dbEntry = context.Products.Find(product.ProductID);
            if (dbEntry != null) {
            dbEntry.Name = product.Name;
            dbEntry.Description = product.Description;
            dbEntry.Price = product.Price;
            dbEntry.Category = product.Category;
            dbEntry.ImageData = product.ImageData;
            dbEntry.ImageMimeType = product.ImageMimeType;
            }
        }
        context.SaveChanges();
    }
    
    
    public FileContentResult GetImage(int productId) {
        Product prod = repository.Products.FirstOrDefault(p => p.ProductID == productId);
        if (prod != null) {
            return File(prod.ImageData, prod.ImageMimeType);
        } else {
            return null;
        }
    }
    

    Hope this helps...

    0 讨论(0)
提交回复
热议问题