ASPP.NET CORE WEBAPI:文件上传错误:System.IO.InvalidDataException:超过多部分正文长度限制 16384
Posted
技术标签:
【中文标题】ASPP.NET CORE WEBAPI:文件上传错误:System.IO.InvalidDataException:超过多部分正文长度限制 16384【英文标题】:ASPP.NET CORE WEBAPI : File upload error : System.IO.InvalidDataException: Multipart body length limit 16384 exceeded 【发布时间】:2022-01-05 05:33:43 【问题描述】:我正在尝试使用 asp.net core Webapi 和 postman 上传和处理文件。
这是控制器后端的代码:
using System;
using Microsoft.AspNetCore.Mvc;
using System.IO;
namespace Learn_Core_API.Controllers
public class HomeController : Controller
[Route("")]
public IActionResult Index()
return View();
[HttpPost("add_file")]
[RequestFormLimits(ValueLengthLimit = int.MaxValue, MultipartBodyLengthLimit = int.MaxValue)]
public string Upload([FromBody]Microsoft.AspNetCore.Http.IFormFile File)
var files = HttpContext.Request.Form.Files;
var uploadDirecotroy = "uploads/";
var uploadPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, uploadDirecotroy);
if (!System.IO.Directory.Exists(uploadPath))
Directory.CreateDirectory(uploadPath);
var fileName = Guid.NewGuid() + System.IO.Path.GetExtension(File.FileName);
var filePath = System.IO.Path.Combine(uploadPath, fileName);
return fileName;
这里是 startup.cs 文件中用于配置上传的代码:
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
services.AddControllers();
services.AddMvc();
services.AddDbContext<Learn_Core_API.Models.ReunionDbContext>(options => options.UseSqlServer(ConnectionString));
services.Configure<FormOptions>(x =>
x.MultipartBodyLengthLimit = 10000000000;
);
以下是邮递员的屏幕截图,其中包含发出的请求、发送的 http 标头 和服务器发回的 Http 响应 错误:
请求标头 请求正文如你所见,我得到了错误:
System.IO.InvalidDataException: Multipart body length limit 16384 exceeded.
有什么想法吗? 谢谢。
【问题讨论】:
你可以先试试这个帖子里的解决方案,可能对你有帮助:***.com/questions/55582335/… 【参考方案1】:试试看:
[HttpPost("add_file")]
[DisableRequestSizeLimit] //<======= add this line
[RequestFormLimits(ValueLengthLimit = int.MaxValue, MultipartBodyLengthLimit = int.MaxValue)]
public string Upload([FromForm]IFormFile file) //<=== change it to 'FromForm'
if (file == null || file.Length < 1)
return BadRequest("file is empty");
await using (Stream fileStream = new FileStream("Your path ...", FileMode.Create))
await file.CopyToAsync(fileStream);
return Ok();
iis web.config:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483648" />
</requestFiltering>
</security>
</system.webServer>
http
...
client_max_body_size 2G;
【讨论】:
仍然有同样的错误。 @thesmartlife 在您的本地主机或服务器中?如果服务器你的网络服务器是什么? iis? nginx? 我正在使用 iis express @thesmartlife 你在本地也有问题? 是的,我在本地主机上测试它。以上是关于ASPP.NET CORE WEBAPI:文件上传错误:System.IO.InvalidDataException:超过多部分正文长度限制 16384的主要内容,如果未能解决你的问题,请参考以下文章
由于请求正文过大,大文件上传到 ASP.NET Core 3.0 Web API 失败
我使用 .net core webapi 怎么获取图片并存到本地磁盘去
如何使用WEB API Dot net core实现文件上传?