Сохранение изображений на внешнем сервере - PullRequest
0 голосов
/ 17 сентября 2018

Сейчас я занимаюсь разработкой веб-приложения на c # (ASP.NET MVC).

Мне нужно загрузить изображения на этот сайт, и сейчас я сохраняю изображения в папке локально, например:

[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».Идентификаторы этих изображений затем сохраняются в таблице базы данных, поэтому позже я смогу получать изображения по идентификатору.

Теперь проблема в том, что я предпочел бы, чтобы моя папка изображений сохранялась вотдельный сервер, поэтому он не занимает места на сервере, на котором развернут мой проект и база данных.

Я читал, что этот метод сделает скорость загрузки намного быстрее, так как изображения могут быть болезненными из-за их размера.

Как мне поступить?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Это на самом деле очень просто.

  • Создайте WebAPI (REST API) на втором сервере, для которого вы хотите изображения быть сохраненным на.
  • Отправьте изображения в Base64EncodedString на 2-й сервер.
  • Преобразовать их обратно в растровое изображение
  • Сохранить на 2-м сервере и вернуть путь для сохранения в поле БД 1-го сервера
0 голосов
/ 17 сентября 2018

Рассматривали ли вы их хранение в wwwroot?Это идеальное место для вашего статического контента.

Когда данные находятся в БД, ваша БД должна перебирать все записи, делая ее медленной.Когда он находится в wwwroot, он только занимает некоторое пространство.Вам просто нужно записать изображения в wwwroot (расположенный в корне структуры папок), а затем получить их примерно так:

foreach( Directory.GetFiles(...) ){....}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...