Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C中服务器端文件大小的限制#_C#_Asp.net Mvc - Fatal编程技术网

C# C中服务器端文件大小的限制#

C# C中服务器端文件大小的限制#,c#,asp.net-mvc,C#,Asp.net Mvc,我目前正在上传MVC4中的文件,但在我的控制器中,我试图将文件大小限制为4MB最大,但收到以下警告 与积分常数的比较是无用的 举例 由于file.ContentLength是一个我无法控制的int,我不知道如何解决这个问题。有人能帮我限制服务器端的文件大小吗 对那些可能想指出4000000000是4gb的人进行编辑,你是对的。但是,即使我用4000000替换它,我的操作也会成功完成,但不会将文件保存为我的if()不满足,即file.ContentLength

我目前正在上传MVC4中的文件,但在我的控制器中,我试图将文件大小限制为4MB最大,但收到以下警告

与积分常数的比较是无用的

举例

由于
file.ContentLength
是一个我无法控制的
int
,我不知道如何解决这个问题。有人能帮我限制服务器端的文件大小吗

对那些可能想指出
4000000000
4gb
的人进行编辑,你是对的。但是,即使我用
4000000
替换它,我的操作也会成功完成,但不会将文件保存为我的
if()
不满足,即
file.ContentLength<4000000
返回false


编辑这不是一个重复的问题。我想将文件大小限制在某个限制范围内。不要忽略IIS中的文件大小限制。

在web.config中设置此值


对于使用
ifformfile
的用户,您可以使用以下选项

[HttpPost]
public ActionResult Upload(IFormFile file)
{
      int fourMB = 4 * 1024 * 1024;
      var fileSize = file.Length;//Get the file length in bytes
      if (fileSize / 1048576.0 > fourMB) //1048576 (i.e. 1024 * 1024):
        {
          var fileName = System.IO.Path.GetFileName(file.FileName);
          var path = System.IO.Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
          file.SaveAs(path);
        }
 }

如果file.ContentLength是32位有符号整数,则可以将其与之比较的最大值为20亿。这可以解释你收到的特定消息。可能是的重复我不知道你是否试图上传一个精确的4MB文件,但请记住,4MB=4 194 304字节。在上传请求期间,您是否逐行检查了代码?如果其中一个if语句失败,您是否有错误消息?@Tommy即使文件是100kb文本文件,if(file.ContentLength<4000000)也不满足要求。代码执行时没有任何堆栈错误,但不保存文件。报告的文件是什么。contentLength()?您是否附加了调试器来检查代码中实际报告的值?注意:请求长度不仅仅是文件大小,还包括所有请求数据,例如表单字段。我遇到了一个问题,我发回了大约1200个字段(不要问为什么)。@Nick正是我所想的+1。
Maximum request length exceeded.
[HttpPost]
public ActionResult Upload(IFormFile file)
{
      int fourMB = 4 * 1024 * 1024;
      var fileSize = file.Length;//Get the file length in bytes
      if (fileSize / 1048576.0 > fourMB) //1048576 (i.e. 1024 * 1024):
        {
          var fileName = System.IO.Path.GetFileName(file.FileName);
          var path = System.IO.Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
          file.SaveAs(path);
        }
 }