我正在使用Angular +. NET实现一个多文件上传器。用户选择多个文件,Web应用程序向我的API发送多个发布请求。
沿着二进制文件,我将在表单数据请求中发送一些其他属性。但是只有二进制/文件在不同的请求中发生了变化。
出于某种原因,只有最后一个请求被接受,并导致成功上传。
我的端点只被最后一个请求命中一次:
[HttpPost("asset")]
[Consumes("multipart/form-data")]
[ProducesResponseType(typeof(BinaryResponse), StatusCodes.Status201Created)]
[ProducesResponseType(typeof(GenericResponse), StatusCodes.Status413RequestEntityTooLarge)]
[ProducesResponseType(typeof(GenericResponse), StatusCodes.Status400BadRequest)]
[ProducesResponseType(typeof(GenericResponse), StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> UploadBinary([FromForm] IFormFile file, [FromForm] BinaryRequest binary)
{
//...
}
Angular服务被调用了3次:
uploadFile(version: string, product: string, asset: Asset) : Observable<HttpEvent<BinaryResult>> {
const formData: FormData = new FormData();
formData.append('version', version);
formData.append('file', asset.file);
formData.append('operationalSystem', asset.operationalSystem);
formData.append('architecture', asset.architecture);
return super.postReporter<BinaryResult>('asset', formData);
}
//Base class:
protected postReporter<X>(sub: string, content: any) {
return this.httpClient.post<X>(`${environment.apiUrl}/${this.base}/${sub}`, content, {
reportProgress: true,
observe: 'events',
});
}
是否有任何配置,我可能会错过,使多个请求被接受一次?
与文件上传相关的唯一更改设置是:
builder.Services.Configure<KestrelServerOptions>(options =>
{
options.Limits.MaxRequestBodySize = int.MaxValue;
});
1条答案
按热度按时间nimxete21#
我在Startup.cs,.NET Core 3.1中使用此配置: