【发布时间】:2020-02-02 05:24:33
【问题描述】:
我有一个简单的带有动作的 web api 控制器
[HttpPost]
public async Task<IActionResult> Add(IFormFile file)
{
var firmware = await _firmwareManager.Add(
new FirmwareAddDto
{
Name = file?.FileName,
Version = version,
Data = file?.OpenReadStream()
});
return StatusCode((int)HttpStatusCode.Created, firmware);
}
然后在管理器中,我有这段代码将流存储到 azure blob 存储
byte[] data = firmwareAddDto.Data.ToByteArray();
var blob = await _fileStorage.Add("filename", data);
我应该在这里处理一些东西吗?我要上传一个大文件。请告知它是否会正确处理
【问题讨论】:
-
你能提供更多关于 _fileStorage 变量类型的细节吗?并确认是否存在以流作为输入的重载?
-
不,没有过载。是
Task<File> Add(string name, byte[] data); -
但是该方法所属的类是什么?它是来自已知的图书馆还是由您制作的?因为如果它是一个大文件,我会建议你从一个流复制到另一个流,这样你就不必将它加载到字节数组中的内存中。
-
它是一些内部库(NuGet 包)。是的,我可以添加重载来使用流。我应该在哪里处理它?
标签: c# asp.net-core garbage-collection asp.net-core-webapi dispose