2013-07-24 29 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。 –