我目前正在用c#(ASP.NET MVC)开发一个Web应用程序。
我需要在该站点上载图像,现在我将图像保存在本地的文件夹中,如下所示:
[HttpPost]
public ActionResult Create(Product product, HttpPostedFileBase file)
{
if (!ModelState.IsValid)
{
return View(product);
}
else
{
if (file != null)
{
product.Image = product.Id + Path.GetExtension(file.FileName);
file.SaveAs(Server.MapPath("//Content//ProductImages//") + product.Image);
}
context.Insert(product);
context.Commit();
return RedirectToAction("Index");
}
}
如您所见,我将图像存储在“ ProductImages”文件夹中。这些图像的ID然后存储在数据库表中,因此以后我将能够通过ID来获取图像。
现在,这里的问题是,我宁愿将映像文件夹存储在单独的服务器上,因此它不会占用我已部署项目和数据库的服务器上的空间。
我已经读到,这种方法将使加载速度大大加快,因为图像由于尺寸太大而难以处理。
我将如何处理?
预先感谢
答案 0 :(得分:1)
实际上非常简单。
Base64EncodedString
中的图像发送到第二个
服务器。 答案 1 :(得分:0)
您是否考虑过将它们存储在wwwroot中?这是存放静态内容的理想场所。
当数据位于数据库中时,您的数据库必须遍历所有记录,从而使其变慢。当它在wwwroot中时,仅占用一些存储空间。您只需要将图像写入wwwroot(位于文件夹结构的根目录),然后使用类似以下的方法检索它们:
foreach( Directory.GetFiles(...) ){....}