2017-08-24 101 views
1

我在下面的下面的代碼:驗證上傳大小

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的文件被阻止。我搜索並看到kb中的50mb是51200.

+0

確保您的Web服務器配置爲拒絕比更大的文件的心不是? – BugFinder

回答

1

你已經閱讀官方msdn documentation

的方法,長度():

得到在流的字節長度。

實際上,51200字節等於0,05 Mb。 你試過改變它嗎?

如果您需要封鎖超過50MB大小的上傳,您需要將其設置爲: 50 Mb = 52,428,800字節。

+0

這對我有效。將該值更改爲52428000.謝謝! –

1

我不是那麼肯定,但你可以試試這個:

double filesize = data.Length/2048 

記得1024kb == 1MB1024byte == 1kb這就是爲什麼data.Length /2048拿到兆字節

filesize == MB

if(filesize>50) 

什麼內容價值像那樣......

+0

我試過這個,但驗證仍然失敗的10MB文件。 –

1

就在你的web.config中加入這一行,它不會允許超過指定大小從應用程序上傳

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

maxRequestLength="15000"將允許最大爲15 MB,後其將通過例外,同樣可以指定爲根據您的要求。

Config文件將檢查上傳文件的大小和你沒有寫具體的代碼相同