在我将图像路径成功上传到数据库后,我试图将其显示在网格中。在数据库中,我有一个像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();
}
答案 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
,用于您的图像标记。