通过HTTP访问图像

时间:2019-04-08 19:09:18

标签: c# asp.net-core

我需要制作一个文件,例如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使文件可用。如何在ASP.NET Core中做到这一点?

1 个答案:

答案 0 :(得分:0)

我终于明白了!您只需要制作一个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));
       }
   }
   //...
}

之后,我可以通过网址https://efolio.com/content/project/1003/1.jpg

访问缩略图