无法修复'多部分体长限制16384超出'

时间:2018-03-25 23:55:28

标签: angular asp.net-core

我的asp net core web api中有一个用于上传图像的文件控制器。我使用MS提供的样本来处理大文件(https://docs.microsoft.com/zh-cn/aspnet/core/mvc/models/file-uploads#uploading-large-files-with-streaming)。

从我的Angular 5前端我使用了一个包来创建一个文件上传控件,它工作正常,但我不喜欢外观,所以我一直在尝试创建自己的版本。

我上传的代码如下所示:

uploadFile(file: File, relativePath: string): Observable<HttpEvent<ExternalFileResponse>> {
  const headers = this.getHeaders('multipart/form-data; boundary=fredfile;');
  const formData = new FormData();
  formData.append('file', file, relativePath);

  formData.append('externalFileType', ExternalFileTypeEnum.image.toString());
  formData.append('subType', file.type);

  return this.httpClient.post<ExternalFileResponse>(
    environment.fileApiUrl + '/upload',
    formData,
    {
      headers: headers,
      observe: 'events',
      // params: this.httpRequestParams,
      reportProgress: true,
      responseType: 'json'
    });
}

上传任何文件都会给我:

超出身体长度限制16384

所以也把它添加到我的创业公司:

services.Configure<FormOptions>(x =>
  {
    x.ValueLengthLimit = int.MaxValue;
    x.MultipartBodyLengthLimit = int.MaxValue;
    x.MemoryBufferThreshold = int.MaxValue;
  });

但那没有用。 (我见过的所有例子都是使用services.AddMvc()但我使用的是services.AddMvcCore()。我想知道这是不是一个问题?)

Chrome没有显示足够的信息来查看完整的请求,我无法让Fickdler在Windows 10上工作。

不确定下一步该尝试什么。这里有人有任何想法吗?

由于

2 个答案:

答案 0 :(得分:1)

典型的是,一发帖提问,我就明白了。

我删除了'multipart / form-data; ...'标题,它运行正常。它看起来像是聪明的(?)足以添加它自己的内容类型标题,我的那个只是搞砸了。

仍然对FormOptions无法正常工作感到好奇......

答案 1 :(得分:1)

为我删除request.AddHeader("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");也解决了这个问题!