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 saveStockReceiptlieu depost: any

Commentaires

Posts les plus consultés de ce blog

Erreur Symfony : "Une exception a été levée lors du rendu d'un modèle"

Détecter les appuis sur les touches fléchées en JavaScript

Une chaîne vide donne "Des erreurs ont été détectées dans les arguments de la ligne de commande, veuillez vous assurer que tous les arguments sont correctement définis"