使用filepath从数据库显示图像

时间:2014-12-23 20:06:58

标签: c# asp.net-mvc

在我将图像路径成功上传到数据库后,我试图将其显示在网格中。在数据库中,我有一个像c:\users\ibn hamza\documents\visual studio 2013\Projects\Blogger\Blogger\Uploads这样的文件路径。

我试图通过这样做来显示图像

@foreach (var item in Model)
{
    <img src="@item.FilePath" height="127" width="127"/>
}

&#34;

当我构建解决方案时,我得到一个没有图像但带有占位符的空白页面。我检查了占位符,我得到了这条路<img src="c:\users\ibn hamza\documents\visual studio 2013\Projects\Blogger\Blogger\Uploads\Lagos-20140103-00347.jpg" height="127" width="127">

我点击了路径,没有显示任何图片。请问我如何正确显示图像。我还会提供控制器和存储图像的动作

public ActionResult SaveUploadedFile(AddMediaVM model)
{
    if (ModelState.IsValid)
    {


        bool isSavedSuccessfully = true;

        foreach (string fileName in Request.Files)
        {

            var newFile = db.Media.Create();

            HttpPostedFileBase file = Request.Files[fileName];
            var filetype = Path.GetExtension(file.FileName).ToString();
            var filename = file.FileName;
            var filesize = file.ContentLength;
            var contenttype = file.ContentType;
            var FilePath = Server.MapPath("/Uploads");
            string SavedFileName = Path.Combine(FilePath, filename);
            file.SaveAs(SavedFileName);
            newFile.FileName = filename;
            newFile.FileSize = filesize;
            newFile.FileType = filetype;
            newFile.ContentType = contenttype;
            newFile.FilePath = SavedFileName;
            newFile.Description = model.Description;
            newFile.Credit = model.Credit;
            newFile.DateUploaded = DateTime.Now;
            FormsIdentity identity = (FormsIdentity)User.Identity;
            int nUserID = Int32.Parse(identity.Ticket.UserData);
            newFile.Uploader = nUserID;
            db.Media.Add(newFile);
            db.SaveChanges();
            //return RedirectToAction("Admin", "Index");


            //Save file content goes here
        }

        if (isSavedSuccessfully)
        {
            return Json(new { Message = "File saved" });
        }
        else
        {
            return Json(new { Message = "Error in saving file" });
        }
    }

    return View();
}

2 个答案:

答案 0 :(得分:1)

您正在使用服务器上的绝对路径(来自MapPath),这是不好的。该文件不可供用户使用。请尝试以下代码,以指示该文件在“上传”中可用。文件夹中。

@foreach (var item in Model)
{
    <img src="/Uploads/@item.FileName" height="127" width="127"/>
}

答案 1 :(得分:0)

您应该使用指向Web服务器上的图像(或Web服务器可访问)的相对路径。例如,您的Web根目录中可能有一个Uploads文件夹(物理/虚拟文件最适合您)。然后在您的数据库中,您将路径存储为/Uploads/Lagos-20140103-00347.jpg,用于您的图像标记。