将图像保存在外部服务器上

时间:2018-09-17 17:32:17

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

我目前正在用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来获取图像。

现在,这里的问题是,我宁愿将映像文件夹存储在单独的服务器上,因此它不会占用我已部署项目和数据库的服务器上的空间。

我已经读到,这种方法将使加载速度大大加快,因为图像由于尺寸太大而难以处理。

我将如何处理?

预先感谢

2 个答案:

答案 0 :(得分:1)

实际上非常简单。

  • 在要映像的第二台服务器上创建WebAPI(REST API) 保存。
  • Base64EncodedString中的图像发送到第二个 服务器。
  • 将它们转换回位图
  • 保存在第二台服务器上并返回要保存在第一台服务器的db字段中的路径

答案 1 :(得分:0)

您是否考虑过将它们存储在wwwroot中?这是存放静态内容的理想场所。

当数据位于数据库中时,您的数据库必须遍历所有记录,从而使其变慢。当它在wwwroot中时,仅占用一些存储空间。您只需要将图像写入wwwroot(位于文件夹结构的根目录),然后使用类似以下的方法检索它们:

foreach( Directory.GetFiles(...) ){....}