.NET Core修改文件上传大小限制

Asp.NET Core中,默认允许文件上传大小才20多M,上传的文件超过这个大小就报错。要修改限制,要改两个地方。

 

比如要允许最大上传大小为2G。

 

1.在web.config(没有的话建一个,或者把发布后自动生成的web.config拷回项目中)添加requestFiltering节点

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <security>
        <requestFiltering>
          <!--2048MB -->
          <requestLimits maxAllowedContentLength="2147483648" />
        </requestFiltering>
      </security>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="%LAUNCHER_PATH%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" arguments="%LAUNCHER_ARGS%" />
    </system.webServer>
  </location>
</configuration>

 

2.控制器中,在action上面加
  [HttpPost]
  [RequestFormLimits(MultipartBodyLengthLimit = 2147483648)]//2000M 2147483648  2G
  [RequestSizeLimit(2147483648)]

        [HttpPost]
        [RequestFormLimits(MultipartBodyLengthLimit = 2147483648)]//2000M 2147483648  2G
        [RequestSizeLimit(2147483648)]
        public async Task UploadFile(List file1)
        {
            var listObj = new List();
            foreach (var formFile in file1)
            {
                var newFileName = Guid.NewGuid().ToString("N") + Path.GetExtension(formFile.FileName);// formFile.FileName;
                var filePath = uploadFolder + newFileName;

                if (formFile.Length > 0)
                {
                    using (var stream = new FileStream(filePath, FileMode.Create))
                    {
                        await formFile.CopyToAsync(stream);
                    }
                }

                var obj = new
                {
                    date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                    newFileName,
                    originalFileName = formFile.FileName,                    
                    size = formFile.Length,
                };
                listObj.add(obj)
            }
            
            return JsonConvert.SerializeObject(listObj);
        }        


        

3.视图(这部分不用修改,为了完整也贴出来)
file1与第2步控制器中的file1对应

<form action="/控制器名/UploadFile" method="post" enctype="multipart/form-data">
    <input type="file" name="file1"/>
    <input type="submit" name="submit" value="上传" onclick="this.value='上传中...'" />
</form>

 

大文件建议使用分块上传

类别:DotNET   阅读(0)   评论(0)    发表时间:2019-06-24 22:34  星期一

评论区

发表评论

        姓名:
邮箱|网站:
        内容:

  (可按Ctrl+Enter提交)