2013-07-24 38 views
3

我目前上傳的MVC4但在我的控制文件,我試圖限制文件大小爲4MB最大,但得到以下警告限制在C#中的文件大小服務器端

comparison to integral constant is useless

使用Haacks例子

[HttpPost] 
public ActionResult Upload(HttpPostedFileBase file) 
{ 
if (file.ContentLength > 0) 
{ 
if (file.ContentLength < 4000000000) 
{ 
    var fileName = System.IO.Path.GetFileName(file.FileName); 
    var path = System.IO.Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName); 
    file.SaveAs(path); 
} 

當我運行的代碼中,我得到的錯誤

Maximum request length exceeded. 

由於file.ContentLength是一個int,我無法控制,我不知道這是什麼方法。任何人都可以幫助我如何限制文件大小服務器端。

編輯對於那些可能想指出40000000004gb你是對的。但即使我將其替換爲4000000,我的操作也會成功完成,但不會保存文件,因爲我的If()未得到滿足,即file.ContentLength < 4000000返回false。

編輯這不是一個重複的問題我想限制我的文件大小到一定的限制而不會忽略IIS中的文件大小限制。

+0

如果file.ContentLength是一個32位整數簽署的最大值,你可以把它比爲2十億。這將解釋你得到的特定信息。 –

+0

可能的重複[有沒有辦法忽略2GB文件上傳的maxRequestLength限制?](http://stackoverflow.com/questions/13129746/is-there-a-way-to-ignore-the-maxrequestlength-limit -of-2gb-file-uploads) –

+0

我不知道你是否試圖上傳一個確切的4MB文件,但請記住,4兆字節= 4 194 304字節。您是否在上傳請求期間一行一行地完成了代碼?如果其中一個if語句失敗,您是否有錯誤消息? – Tommy

回答

3

坐落在你的web.config這個值

<httpRuntime maxRequestLength="4096"/>

+3

注意:請求長度不僅僅是文件大小,它也是所有的請求數據,比如表單域。我遇到了一個問題,我發佈了1200個字段(不要問爲什麼)。 –

+0

@尼克正是我在想的還是+1。 –