首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FormData + IFormFile为空

FormData + IFormFile为空
EN

Stack Overflow用户
提问于 2022-04-28 15:20:50
回答 1查看 644关注 0票数 0

我对IFormFile和FormData有意见。

当我使用FormData提交文件时,映射的对象在后端返回一个空值。

我提供了一个代码示例,以便您可以查看我的代码。

角:

代码语言:javascript
复制
upload(prod: Product) {
let formData = new FormData();

formData.append("productName", prod.productName);
formData.append("productSku", prod.productSku);    

for(let i=0;i<prod.variants.length;i++){
  formData.append(`variants[${i}][variantName]`, prod.variants[i].variantName);
  formData.append(`variants[${i}][media][fileName]`, prod.variants[i].media.fileName);
  formData.append(`variants[${i}][media][mediaFile]`, prod.variants[i].media.mediaFile);
}
console.log(prod);
this.http.post('https://localhost:7255/api/products', formData)
.subscribe(res => {
  console.log(res);
  alert('Uploaded Successfully.');
})

}

ASP.Net芯

代码语言:javascript
复制
[Route("api/[controller]")]
[ApiController]
public class ProductsController : ControllerBase
{
    
    public ProductsController() {}
    
    [HttpPost]
    public IActionResult Post([FromForm] ProductCreateDto product )
    {
        return Ok();
    }

}
public class ProductCreateDto
{
    [JsonProperty("productName")]
    public string? ProductName { get; set; }
    [JsonProperty("productSku")]
    public string? ProductSku { get; set; }
    [JsonProperty("variants")]
    public IEnumerable<Variant> Variants { get; set; }
}

public class Media
{
    [JsonProperty("fileName")]
    public string? FileName { get; set; }
    public IFormFile? MediaFile { get; set; }
}

public class Variant
{
    [JsonProperty("variantName")]
    public string? VariantName { get; set; }
    [JsonProperty("media")]
    public Media? Media { get; set; }
}

我得到了什么

当我更新代码并在DTO中放置一个IFormFile时,它可以工作。

代码语言:javascript
复制
    public class ProductCreateDto
{
    [JsonProperty("productName")]
    public string? ProductName { get; set; }
    [JsonProperty("productSku")]
    public string? ProductSku { get; set; }
    [JsonProperty("variants")]
    public IEnumerable<Variant> Variants { get; set; }
    
    public IFormFile TEST { get; set; }
}

第一个代码的错误是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-29 02:34:48

我发现了我的错误。地图绘制得不好。我以前登记过邮递员。这是一个解决办法,如果有人是相互关联的。

代码语言:javascript
复制
upload(prod: Product) {
    let formData = new FormData();

    formData.append("productName", prod.productName);
    formData.append("productSku", prod.productSku);    

    for(let i=0;i<prod.variants.length;i++){
      formData.append(`variants[${i}].variantName`, prod.variants[i].variantName);
      formData.append(`variants[${i}].media.fileName`, prod.variants[i].media.fileName);
      formData.append(`variants[${i}].media.mediaFile`, prod.variants[i].media.mediaFile);
    }   
    this.http.post('https://localhost:7255/api/products', formData)
      .subscribe(res => {
        console.log(res);
        alert('Uploaded Successfully.');
      })
  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72046343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档