Web Api 将每个查询的字节数组转换为 base64
Web Api convert byte array to base64 for every query
我有多种方法,其中我 return 一个查询,问题是 FileContent return 是一个字节数组。我不想在我发出的每个请求中都将字节数组转换为 base64。有没有办法在每个网络 api 方法中应用转换,这样我就不必担心了?
在此之前,我将每个文件都保存为我的数据库中的 base64 字符串,但我了解到它会比正常消耗更多 space。所以我决定把它改成字节数组,但我不知道如何解决这个问题。
public class File
{
public int FileId { get; set; }
public string FileName { get; set; }
public byte[] FileContent { get; set; }
public Advertentie Advertentie { get; set; }
public int AdvertentieId { get; set; }
}
public IActionResult Row([FromRoute] int id)
{
var advertentie = db.Advertenties.Include(x => x.Files).Where(a => a.Id == id).FirstOrDefault();
// So here each advertentie can contain multiple files, how to convert FileContent to base64 so that every file becomes base64 and return advertentie.
if(advertentie == null)
{
return NotFound();
}
return Ok(advertentie);
}
您有多种选择:
- 使用仅获取 属性 扩展现有的
FileModel
。您也可以以延迟加载的方式执行此操作。
public byte[] FileContent { get; set; }
public string FileContentString { get { return Convert.ToBase64String(FileContent); } }
public class Base64Result : ActionResult
{
private File _file;
public Base64Result(File file)
{
_file = file;
}
public override async Task ExecuteResultAsync(ActionContext context)
{
// Do the bas64 magic here (use _file to build a response)
}
}
然后
public Base64Result Row([FromRoute] int id)
{
// ...
return new Base64Result(file);
}
- 您可以创建具有所需类型属性的 "view-model",填充它们,然后使用 automapper 处理其余属性。
有很多选择。
我有多种方法,其中我 return 一个查询,问题是 FileContent return 是一个字节数组。我不想在我发出的每个请求中都将字节数组转换为 base64。有没有办法在每个网络 api 方法中应用转换,这样我就不必担心了?
在此之前,我将每个文件都保存为我的数据库中的 base64 字符串,但我了解到它会比正常消耗更多 space。所以我决定把它改成字节数组,但我不知道如何解决这个问题。
public class File
{
public int FileId { get; set; }
public string FileName { get; set; }
public byte[] FileContent { get; set; }
public Advertentie Advertentie { get; set; }
public int AdvertentieId { get; set; }
}
public IActionResult Row([FromRoute] int id)
{
var advertentie = db.Advertenties.Include(x => x.Files).Where(a => a.Id == id).FirstOrDefault();
// So here each advertentie can contain multiple files, how to convert FileContent to base64 so that every file becomes base64 and return advertentie.
if(advertentie == null)
{
return NotFound();
}
return Ok(advertentie);
}
您有多种选择:
- 使用仅获取 属性 扩展现有的
FileModel
。您也可以以延迟加载的方式执行此操作。
public byte[] FileContent { get; set; }
public string FileContentString { get { return Convert.ToBase64String(FileContent); } }
public class Base64Result : ActionResult
{
private File _file;
public Base64Result(File file)
{
_file = file;
}
public override async Task ExecuteResultAsync(ActionContext context)
{
// Do the bas64 magic here (use _file to build a response)
}
}
然后
public Base64Result Row([FromRoute] int id)
{
// ...
return new Base64Result(file);
}
- 您可以创建具有所需类型属性的 "view-model",填充它们,然后使用 automapper 处理其余属性。
有很多选择。