3

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

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 中的文件大小限制。

4

2 回答 2

3

在您的 web.config 中设置此值

<httpRuntime maxRequestLength="4096"/>

于 2013-07-24T22:35:17.077 回答
0

对于那些正在使用的人,IFormFile您可以使用以下内容。

[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);
        }
 }
于 2020-10-09T08:01:13.670 回答