因此,我正在尝试发布包含标题,描述和图像的帖子(例如,类似于Facebook上的帖子)。我使用Angular和ASP.NET CORE进行此操作。我的数据库结构是,我将图像保存在wwwroot服务器文件夹中,并希望创建一个表“ posts”,其中包含指向该文件夹的链接以获取图像。
创建帖子并发送图像都可以,但是现在我想在一个HttpPost中发送对象“ Post”和图像(FormData)。但是,它似乎不起作用。
前端角度
onSubmit(Image) {
let post = new Post(this.post.value.titel, this.post.value.omschrijving, new Date(), this._userService.user$.getValue())
this._postService.voegPostToe(post, this.selectedFile).subscribe();
this.post.reset();
}
voegPostToe(post: Post, fileToUpload: File) {
const formData: FormData = new FormData();
formData.append('Image', fileToUpload, fileToUpload.name);
formData.append('ObjectData', JSON.stringify(post));
return this.http.post(`${environment.apiUrl}/posts`, formData);
}
后端ASP.NET
[HttpPost]
[Authorize(Roles = "Admin")]
public async Task<ActionResult<Post>> PostPost()
{
Post resource = JsonConvert.DeserializeObject<Post>(HttpContext.Request.Form["ObjectData"]);
var file = HttpContext.Request.Form.Files["Image"];
string fileName = new String(Path.GetFileNameWithoutExtension(file.FileName).Take(10).ToArray()).Replace(" ", "-");
fileName = fileName + DateTime.Now.ToString("yymmssfff") + Path.GetExtension(file.FileName);
string filePath = _env.WebRootPath + "\\Images\\" + fileName;
using (var fileSrteam = new FileStream(filePath, FileMode.Create))
{
await file.CopyToAsync(fileSrteam);
}
resource.Fotolink = filePath;
_postRepository.Add(resource);
_postRepository.SaveChanges();
return NoContent();
}
我的问题是我不知道如何将字符串化的Object转换为ASP.NET中的Object的类,我似乎总是遇到BadRequest错误。