مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

payam64

عضویت از 1397/01/14

ارسال همزمان فایل و داده به asp.net core API

  • شنبه 8 دی 1397
  • 16:27
تشکر میکنم

با سلام و خسته نباشید

به عنوان مثال من از مدلی استفاده می کنم که هم شامل یکسری داده و هم شامل تصویر ذخیره شده برای اون مدل هست حالا به چه صورت میشه با استفاده از انگولار و شی  http client همزمان مدل رو به همراه تصویری برای اکشن post در api ارسال کرد ؟

در طرف کنترلر در api یک viewmodel درست کردم که به همراه اطلاعات مورد نیاز فیلدی از نوع IFormFile هم داره ولی هر بار مدل رو null دریافت میکنه و به محض حذف همین فیلد مدل دریافتی دارای مقدار هست

پاسخ های این پرسش

تعداد پاسخ ها : 2 پاسخ
کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • شنبه 8 دی 1397
  • 16:38

کدهاتون رو قرار بدید.

کاربر سایت

payam64

عضویت از 1397/01/14

  • شنبه 8 دی 1397
  • 18:19

حتما مهندس 

کد زیر مربوط به گرفتن اطلاعات از فرم از جمله عنوانی برای فایل تصویری به همراه خود فایل تصویر انتخاب شده

 
onUploadPhoto() {
this.newImage.title = this.createImage.get('title').value;
this.newImage.files = this.fileInputName.files[0];
this.newImage.productId = this.productId;
this.imageService.uploadPhoto(this.productId, this.newImage)
.subscribe(
...
);
}

در مورد کد بالا توضیح بدم که در ابتدا مقدار title از formGroup خوانده میشه در خط بعدی fileInputName یک HtmlInputElement هست که با رویداد change مربوط به فیلد فایل مقداردهی میشه و مقدار اولین فایل انتخاب شده رو برمیگردونه در نهایت مدل مقداردهی شده یعنی this.newImage به سرویس ارسال میشه که کد سرویس برای ارسال به endPoint api به صورت زیر هستش

 
uploadPhoto(productId: BigInteger, photo: ImageModel){
return this.httpClient.post(`${ConstResources.apiEndPoint}image/${productId}`, photo);
}

توی این کد هم مقدار مدل photo در درخواست post ارسال میشه به api که کد api به صورت زیر هستش

 
[HttpPost]
public async Task<IActionResult> PostImage([FromBody] ImageViewModel image)
{
.....
return Ok(newImage);
}

موجودیت ImageViewModel شامل پراپرتی های زیر هست :

 
public class ImageViewModel
{
public long Id { get; set; }
public string FileName { get; set; }
public string Title { get; set; }
public long ProductId { get; set; }
public IFormFile File { get; set; }
}

البته مهندس عزیز برای دریافت فایل به صورت تکی هیچ مشکلی وجود نداره ولی برای دریافت همزمان یکسری از اطلاعات به همراه فایل به فکرم رسید به viewmodel اضافه کنم ولی وقتی فیلدی از نوع IFormFile اضافه میشه مقدار دربافتی مدل در اکشن پست null هست

با سپاس

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)