验证上传大小

时间:2017-08-24 09:47:10

标签: c# file-upload

我在下面有以下代码:

MultipartMemoryStreamProvider result = await Request.Content.ReadAsMultipartAsync(new MultipartMemoryStreamProvider());
HttpContent content = results.Contents.FirstOrDefault(i => i.Headers.ContentDisposition.Name.Contains("FileContent"));

byte[] data = await content.ReadAsByteArrayAsync();

if (data.Length > 51200)
{
    // block upload with more than 50mb of size
}

现在这不起作用,因为甚至阻止了2mb文件。我搜索并看到50mb的kb是51200。

3 个答案:

答案 0 :(得分:1)

您是否已阅读官方msdn documentation

方法Length():

  

获取流的字节长度。

实际上,51200字节等于0.05 Mb。 你有没有试过改变它?

如果您需要阻止大小超过50mb的上传,则需要将其设置为: 50 Mb = 52,428,800字节。

答案 1 :(得分:1)

我不太确定,但你可以试试这个:

double filesize = data.Length / 2048

请记住1024kb == 1MB1024byte == 1kb,这就是data.Length /2048获取Megabyte的原因

filesize == MB

的内容值
 if(filesize>50)

类似的......

答案 2 :(得分:1)

只需在您的web.config中添加此行,它就不允许超出指定的大小从应用程序上传

<httpRuntime executionTimeout="1200" maxRequestLength="15000" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" enableVersionHeader="true" />

maxRequestLength="15000"最多允许15 MB,并通过例外发布,同样您可以根据您的要求进行指定。

Config文件将检查上传文件大小,您不必编写相同的特定代码