【问题标题】:MemoryStream, how many bytes in kb?MemoryStream,kb 有多少字节?
【发布时间】:2019-09-01 16:45:50
【问题描述】:

我正在使用 .net core 上传图像文件。该文件被转换为 MemoryStream,然后发送到将验证该文件的服务。目前我这样做是这样的:

MemoryStream stream = GetMemoryStream();
var fileSize = stream.length;

现在我要确保图像不大于 512 kb。我的问题是我不确定要使用什么值来转换为字节、1024 或 1000?从 MemoryStream 列出长度时,我应该使用十进制值还是二进制值?

哪种情况是正确的?

场景 A

if(fileSize > 512000) return false;

场景 B

if(fileSize > 524288) return false;

编辑:

当我在桌面上查看图像的属性时,它显示为 512KB。计算机使用哪种方案来计算该大小?

【问题讨论】:

  • 我想确保...所以这是你的规则。这意味着您可以选择 1000、1024 甚至 1010。随心所欲。
  • @HenkHolterman 请看我的编辑。
  • “计算机使用哪种方案来计算该大小” - 如果您使用的是 Windows,请右键单击文件资源管理器中的文件并选择属性。它会给你以字节为单位的文件大小

标签: c# asp.net-core stream filesize memorystream


【解决方案1】:

MemoryStream.Length以字节为单位返回包含数据的长度。

因此,您的验证完全取决于您对512 kb 的定义。因此,您的两种情况都有些正确;在第一个中您假设1 kb = 1000 bytes,在第二个中您假设1 kb = 1024 bytes。由您决定哪个更适合您的应用程序。

关于您的编辑,您计算机上用于千字节的值取决于您使用的操作系统。例如,在 Windows 上是1024 bytes

【讨论】:

  • 那么当我上传一个 513 kb 的文件时,我如何确保它失败了?我使用这两个值中的哪一个来失败?
  • @HenkHolterman 这是真的,我试图阐明这里问题中的误解。我编辑了答案以解决问题中的编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-06
  • 2016-09-28
  • 1970-01-01
相关资源
最近更新 更多