我需要制作一个文件,例如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中做到这一点?
答案 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