Comment envoyer un objet et un fichier en même temps d'Angular à .net api ?
J'essaie d'envoyer un objet et un fichier en même temps à.net api mais cela ne fonctionne pas.
J'essaie d'envoyer des données avec FormData du côté angulaire mais FormData n'accepte pas les objets. Lorsque je ne l'envoie pas avec FormData, je ne peux pas recevoir les fichiers du côté.net.
Comment puis-je envoyer les fichiers et l'objet du côté.net en même temps ?
angulaire:
const formData = new FormData();
formData.append('type',this.form.get('type').value)
formData.append('productId',this.form.get('product').value);
formData.append('serialNo',this.form.get('serialNo').value);
formData.append('companyId',this.form.get('company').value);
formData.append('unitPrice',this.form.get('unitPrice').value.toString().replace('.',','));
formData.append('description',this.form.get('description').value);
formData.append('properties',this._helperService.mapToObj(this.properties))
const files = this.form.get('files').value as FileList;
const fileArr = Array.from(files);
if(fileArr.length > 0){
fileArr.forEach(f => formData.append('files',f))
}
this._stockReceiptService.saveStockReceipt(formData).pipe(takeUntil(this.subject)).subscribe(resp => {
this.success.text = "Stok girişi kaydedildi";
this.success.fire();
console.log("Apiden gelen => ", resp);
}, err => {
this.error.text = "Stok girişi yapılırken hata oluştu";
this.error.fire();
});
}
Service SaveStockReceipt :
saveStockReceipt(post: any): Observable<any>{
return this._http.post<any>(this.apiURL + '/stock/stockReceipt',post);
}
modèle.net
public class CreateStockVModel
{
[Required(ErrorMessage = "Type alanı zorunlu alandır.")]
public int Type { get; set; }
[Required(ErrorMessage = "ProductId alanı zorunlu alandır.")]
public int ProductId { get; set; }
[Required(ErrorMessage = "SerialNo alanı zorunlu alandır.")]
public string? SerialNo { get; set; }
[Required(ErrorMessage = "CompanyId alanı zorunlu alandır.")]
public int CompanyId { get; set; }
public decimal? UnitPrice { get; set; }
public string? Description { get; set; }
public List<IFormFile>? Files { get; set; }
public Dictionary<int,int>? Properties { get; set; }
}
manette
[HttpPost]
public async Task<IActionResult> StockReceipt([FromForm] CreateStockVModel vModel)
{
return Ok(vModel);
}
Solution du problème
Peut-être devriez-vous essayer de convertir le modèle C # en interface TS et le mettre au saveStockReceipt
lieu depost: any
Commentaires
Enregistrer un commentaire