返回File()返回更多字节

时间:2017-09-19 20:15:47

标签: asp.net asp.net-core

请考虑以下代码:

//get bytes
var query = await _storage.Get(attachment.Id, General.ContainerType.Uploads);
//just for the sake of debugging
var mem = new MemoryStream(query);
//return the uploaded file
return File(mem, MimeTypesMap.GetMimeType(attachment.FileName), attachment.FileName);

上传67kb的.jpg图像然后使用此方法下载后,返回的图像为107 kb。我已经检查了字节是否正确存储和检索,它们确实与我上传的内容是一致的。如果我上传文本文件并将其返回,则内容和大小都是正确的。

我假设File()有些神奇,但我无法弄清楚为什么和什么?

2 个答案:

答案 0 :(得分:0)

它不是关于File,而是与MemoryStream有关, 用于获取存储在内存流中的字节传递整个流是不适合使用其方便的ToArray()方法的方法。您可以尝试使用Binarywriter

答案 1 :(得分:0)

通过提供azure blob存储文件的URL并添加几分钟的权限来解决:https://stackoverflow.com/a/30468172/4487530