我的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上工作。
不确定下一步该尝试什么。这里有人有任何想法吗?
由于
答案 0 :(得分:1)
典型的是,一发帖提问,我就明白了。
我删除了'multipart / form-data; ...'标题,它运行正常。它看起来像是聪明的(?)足以添加它自己的内容类型标题,我的那个只是搞砸了。
仍然对FormOptions无法正常工作感到好奇......
答案 1 :(得分:1)
为我删除request.AddHeader("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
也解决了这个问题!