我想做一件非常简单的事情:向我的控制器发送一个文件。
我有一个.net核心6.0后端。我的前端API客户机是由NSwag生成的。
我的控制器如下所示(模型包含一个名为“IFormFile”的文件。)
[HttpPost("single-file"), DisableRequestSizeLimit]
public async Task<ActionResult<int>> Create([FromForm] CreateUploadedDocumentModel model)
{...这在生成的swagger UI中工作。
然而,生成的棱角客户端不是。
文件来自html输入。
<input (change)="selectFiles($event)" class="form-control" type="file" id="formFileMultiple">文件类型为FileList[];
在提交时,我循环遍历文件并调用“上载”:
this.uploadClient.create(1, file, file.name).subscribe(
result => {
console.log(result);
},
err => {
this.message = 'Could not upload the file:' + file.name;
});
}下面是自动生成的角web api客户端调用:
create(consultantId: number | undefined, file: FileParameter | null | undefined, fileName: string | null | undefined): Observable<number> {
let url_ = this.baseUrl + "/api/UploadedDocuments/single-file";
url_ = url_.replace(/[?&]$/, "");
const content_ = new FormData();
if (consultantId === null || consultantId === undefined)
throw new Error("The parameter 'consultantId' cannot be null.");
else
content_.append("ConsultantId", consultantId.toString());
if (file !== null && file !== undefined)
content_.append("File", file.data, file.fileName ? file.fileName : "File");
here --> if (fileName !== null && fileName !== undefined)
content_.append("FileName", fileName.toString());因此,当我试图发布时,我会得到一个错误::FormData.append:参数2不是一个对象。因为file.data是在自动生成的客户端中未定义的。
我尝试了许多不同的东西:)我可以创建一个简单的表单数据发布,但是我需要使用Nswag自动生成的客户机“开箱即用”。
任何帮助或指示都将不胜感激,谢谢:)
发布于 2022-11-27 08:50:56
如果有人遇到这个问题..。
我只需从表单输入中包装文件,如下所示:
let fileParameter: FileParameter = { data: file, fileName: file.name };https://stackoverflow.com/questions/74584742
复制相似问题