我在下面有以下代码:
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。
答案 0 :(得分:1)
您是否已阅读官方msdn documentation?
方法Length():
获取流的字节长度。
实际上,51200字节等于0.05 Mb。 你有没有试过改变它?
如果您需要阻止大小超过50mb的上传,则需要将其设置为: 50 Mb = 52,428,800字节。
答案 1 :(得分:1)
我不太确定,但你可以试试这个:
double filesize = data.Length / 2048
请记住1024kb == 1MB
和1024byte == 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
文件将检查上传文件大小,您不必编写相同的特定代码