【问题标题】:Check size of uploaded file in mb检查上传文件的大小(以 mb 为单位)
【发布时间】:2019-11-27 15:40:32
【问题描述】:

我需要验证用户上传的文件不超过 10mb。这能完成工作吗?

var fileSize = imageFile.ContentLength;
if ((fileSize * 131072) > 10)
{
    // image is too large
}

我一直在关注 this threadthis one...,但都没有让我一路走好。我使用this作为转化率。

.ContentLength 以字节为单位获取大小。然后我需要将它转换为mb。

【问题讨论】:

  • 认真的吗?为什么投反对票?你至少可以说出原因。

标签: c#


【解决方案1】:

由于给定大小以字节为单位,您需要 1048576(即1024 * 1024):

var fileSize = imageFile.ContentLength;
if ((fileSize / 1048576.0) > 10)
{
    // image is too large
}

但是如果你预先计算10mb的字节数,计算会更容易阅读:

private const int TenMegaBytes = 10 * 1024 * 1024;


var fileSize = imageFile.ContentLength;
if ((fileSize > TenMegaBytes)
{
    // image is too large
}

【讨论】:

  • 但为什么是 131072?
  • 第一个例子!e 仍然是错误的,因为您执行整数除法。所以如果文件是 10.5mb - 它不会进入图像太大的分支。
【解决方案2】:

你可以用这个方法把你得到的bytes转换成MB:

static double ConvertBytesToMegabytes(long bytes)
{
    return (bytes / 1024f) / 1024f;
}

【讨论】:

  • 正想问为什么这是双打,但这是个好电话!
【解决方案3】:
var fileSize = file.ContentLength;
if (fileSize > 10 * 1024 * 1024)
{
    // Do whatever..
}

【讨论】:

    【解决方案4】:

    字节倍数 (B) 的前缀:
    1024 字节 = 1 千字节
    1024 千字节 = 1 兆字节

    double ConvertBytesToMegabytes(long bytes)
    {
        return (bytes / 1024f) / 1024f;
    } 
    
    var fileSize = imageFile.ContentLength;
    
    if (ConvertBytesToMegabytes(fileSize ) > 10f)
    {
        // image is too large
    }
    

    【讨论】:

      猜你喜欢
      • 2019-03-16
      • 1970-01-01
      • 2014-06-12
      • 2012-02-17
      • 2020-09-30
      • 1970-01-01
      • 2022-08-05
      • 2011-06-03
      • 1970-01-01
      相关资源
      最近更新 更多