【发布时间】:2020-01-30 15:21:17
【问题描述】:
尝试使用 FormData 将图像上传到我的后端。使用我的角度代码时,我的 API 中的文件始终为空。
创建表单数据:
upload() {
let formData = new FormData();
formData.append('upload', this.editedImage);
console.log("editedImage: " + this.editedImage);
console.log("formdata: " + formData);
this.imageService.create(formData).subscribe(response => {
let temp = response;
console.log(temp);
})
}
进行后期调用的服务:
create(formData: FormData): Observable<any> {
console.log("formdata in service: " + formData.get('upload'));
return this.http.post<any>(`${this.url}`, formData).pipe(
tap(data => console.log('Image verstuurd: ' + data)),
catchError(this.handleError)
);
}
接收它的 API:
[HttpPost]
async public Task<ActionResult> Save([FromForm]IFormFile file)
{
// Get reference to blob
var uniqueName = $@"{Guid.NewGuid()}-{file.FileName}";
CloudBlockBlob blockBlob = _blobContainer.GetBlockBlobReference(uniqueName);
using var ms = new MemoryStream();
file.CopyTo(ms);
var stream = ms.ToArray();
await blockBlob.UploadFromByteArrayAsync(stream, 0, stream.Length);
return Json(new
{
name = blockBlob.Name,
uri = blockBlob.Uri
});
}
当我使用 Postman 上传图片时它可以工作,而不是在使用角度代码时。
编辑:
在这里找到正确答案: https://stackoverflow.com/a/35325907/7128762
问题基本上是我需要在我的控制器中为 IFormFile 提供正确的名称。
【问题讨论】: