TransformRequest function: this makes your request submitted as FormData instead as a JSon object.
formDataObject(data: any): any { var fd = new FormData(); angular.forEach(data, function (value, key) { fd.append(key, value); }); return fd; }
In your angular resource, define the save options and pass the previously created transformRequest function.
uploadChequeFile(): ng.resource.IResourceClass<IChequeLoanResource> { return this.$resource<IChequeLoanResource>("/Cheque/UploadChequeImage", null, { save: { method: "POST", transformRequest: this.formDataObject, headers: { 'Content-Type': undefined, enctype: 'multipart/form-data' } } }); }
In your controller, just call the save method from the resource transferring your file.
var chequeFilePathInput: any = $("#chequeFilePath"); if (chequeFilePathInput[0].files) { var resource: ng.resource.IResourceClass<services.IChequeLoanResource> = this.uLendService.uploadChequeFile(); resource.save({ "files": chequeFilePathInput[0].files[0] }, (result: any) => { if (!result || !result.success) { this.errorMessage = "Error al subir la imagen al servidor. Por favor contáctanos si el error persiste."; } else { this.chequeLoan.cheque.filePath = result.message; this.saveChequeLoan(); } }); } else { this.errorMessage = "La imagen del cheque es requerida."; }
Finally, your controller should get the IList parameters (with the same name defined in your angular controller)
public JsonResult UploadChequeImage(IList<IFormFile> files) { try { if (files != null && files.Count > 0) { return CreateResponse(true, CreateFile(files[0], @"img\cheques")); }
Bruno gimenes
source share