angular - 如何将图像和数据(如姓名、年龄、id、性别)从 dotnet core webapi 控制器一起发送到 angular 前端并在前端使用
问题描述
如何将图像和数据(如姓名、年龄、id、性别)从 dotnet core webapi 一起发送到 angular 前端并使用它。这是我一次将产品保存到后端的方法。
addNewProduct(productToAdd: any) {
let formdata: FormData = new FormData();
formdata.append('photo', productToAdd.photo, productToAdd.photoName);//Here is the product photo
formdata.append('name', productToAdd.name);
formdata.append('description', productToAdd.description);
formdata.append('price', productToAdd.price);
formdata.append('isInStock', productToAdd.isInStock)
return this._http.post(BASE_URL + 'product/add', formdata).subscribe();
}
[HttpPost("[action]")]
[Authorize(Policy = "Adminstrator")]
public async Task Add()
{
IFormFile file = HttpContext.Request.Form.Files["photo"];
string uploadsFolder = Path.Combine(environment.ContentRootPath, "images");
string uniqueFileName = Guid.NewGuid().ToString() + "_" + file.FileName;
string filePath = Path.Combine(uploadsFolder, uniqueFileName);
Product product = new Product
{
Name = HttpContext.Request.Form["name"],
Description = HttpContext.Request.Form["description"],
Price = Convert.ToDouble(HttpContext.Request.Form["price"]),
PhotoName = uniqueFileName,
IsInStock = Convert.ToBoolean(HttpContext.Request.Form["isInStock"])
};
using (var fileStream = new FileStream(filePath, FileMode.Create))
{
_context.Products.Add(product);
await _context.SaveChangesAsync();
await file.CopyToAsync(fileStream);
}
}
现在我希望相反的事情将带有图像的相同数据从 webapi 发送到角度前端
解决方案
使用 Dotnet Core API,从 API 端点直接返回 json 对象非常简单。
您可以创建一个对象以通过请求发回。
public class ReturnObject
{
public string Name { get; set; }
public string Description { get; set; }
public double Price { get; set; }
public string PhotoName { get; set; }
public bool IsInStock { get; set; }
}
然后是控制器端点
[HttpPost("[action]/{id}")]
[Authorize(Policy = "Adminstrator")]
public async Task<ReturnObject> Get(string id)
{
// Gather your data to return
return new ReturnObject()
{
Name = "Name",
Description = "Description",
Price = 299,
PhotoName = "Photo Name",
IsInStock = false
};
}
返回对象定义要返回的数据的结构,例如,您可以从您的角度应用程序中调用{URL}/get/myId
。
推荐阅读
- javascript - 如何检查对象数组中键的所有值是否为0?
- jquery - nanoGallery 显示错误
- android - 我如何重构导航抽屉
- python - 如何拆分列表元素并根据空格分隔符替换它们?
- html - 调整窗口大小时如何阻止右侧浮动导航内容溢出
- python - tkinter 组合框,从同一文件运行时,条目正确显示。但是当从另一个模块调用相同的值时不显示正确的值
- flutter - 条件“满足”后未返回小部件 (!snapshot.hasData)
- java - 无法使用带有 Spring Batch + Spring Boot 的 XStreamMarshaller 解析 xml
- android - 如何在android中添加21天的日期选择器值
- github - 如何在不共享 URL 的情况下将来自 Github 的提交的 git diff 发送给其他人?