Сделать изображение доступным через HTTP - PullRequest
1 голос
/ 08 апреля 2019

Мне нужно сделать файл, например, c:\users\user\documents\screenshot.png, чтобы он был доступен из сети и имел собственный URL: content.efolio.com/p/123/screenshot.png.

На данный момент я сохраняю путь к файлу в таблице базы данных.Когда приходит запрос, файл преобразуется в строку Base64 и отправляется внутри JSON.

public class Project 
{
  public int Id { get; set; }

  public string Name { get; set; }

  public string PhotoEncoded { get; set; }

  public string Description { get; set; } 

  public void AddPhoto(byte[] content, string fileFormat) 
  {
    PhotoEncoded = string.Format("data:image/{0};base64,{1}", 
      fileFormat.Substring(1,fileFormat.Length-1), 
      Convert.ToBase64String(content)
    );
  }
}

Но я хочу отправить только URL.Проблема в том, что я не знаю, как сделать файл доступным через URL.Как мне это сделать в ASP.NET Core?

1 Ответ

0 голосов
/ 25 апреля 2019

Я наконец понял это! Вам просто нужно сделать ContentController, который будет обслуживать отдельные файлы и использовать метод File() в ControllerBase:

[ApiController] 
[Route("[controller]")]
public class ContentController : ControllerBase
{
   [HttpGet("project/{id}/{fileName}")] 
   public async Task<IActionResult> GetProjectThumbnail(int id, string fileName)
   {
       try
       {
           return File(await _projects.GetThumbnailAsync(id, fileName), "image/jpeg");
       }
       catch (Exception ex)
       {
           return StatusCode((int)HttpStatusCode.InternalServerError, new ErrorResponse(ex));
       }
   }
   //...
}

После этого я могу получить доступ к миниатюре через URL: https://efolio.com/content/project/1003/1.jpg

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