آپلود عکس با مدل در Web API 2

گاهی وقتا یه کار که قبلا زیادم باهاش سرو کار داشتی میشه بلای جونت!امان از فراموشی!

این اتفاق تازه کار و حرفه ای هم نمیشناسه پیش میاد برای همه.

ماجرا از اونجا شروع شد که برای یک سرویس توی پروژه هامون نیاز به آپلود امضای کاربر از طریق وب سرویس ها داشتیم.

حالا ما بشینیم فکر کنیم چی چی میخوان و به چه شکل.

وقتی مشخص شد که چیا نیازه مشکل شروع شد. شاید بیش از 5 روش مختلف برای اپلود در پروژه ها استفاده کردیم و الان هیچکدوم جواب نمیدن!

میخواستیم همراه با عکس اطلاعات دیگه ای هم بفرستیم سمت سرور. کلی توی نتم گشتم و چیزی پیدا نشد تا شروع کردیم به مخلوط کردن سرویس ها.

از اونجایی که میدونم باز یادم میره و از اونجایی که این روش یه روش کلیه برای تمام اپلودهامون گفتم بذارمش اینجا شماها هم استفاده کنین:

string Id = httpRequest.Form[0];

string FileName = HttpContext.Current.Request.Files[0].FileName;
 

توضیحی که باید بدم اینه که خود سرویس ورودی نیاز نداره داشته باشه.

برای گرفتن مدل از خط بالایی

و برای گرفتن عکس از خط پایینی استفاده کنید.

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

مابقیشم که اپلوده که پایین میذارم محض احتیاط که فراموشم نشه:

 [Route("اسم سرویس")]
 
 [HttpPost]
 
 public IHttpActionResult اسم()
 {
 
 HttpRequest httpRequest = HttpContext.Current.Request;
 
 try
 {
 string Id = httpRequest.Form[0];
 string FileName = HttpContext.Current.Request.Files[0].FileName;
 string ImgDirectory = "آدرس";
 HttpPostedFileBase postedFile =
 new HttpPostedFileWrapper(HttpContext.Current.Request.Files[0]);
 FTPManager.UploadFileToFTP(postedFile, ImgDirectory, FileName);
 bool IsExists = FTPManager.StaticCheckFileExistOrNot(new FTPSetting().FTPServerAddress + ImgDirectory + FileName);
 if (IsExists)
 {
 دستورات برای هرچیزی که بعد اپلود نیازه
 if (db.SaveChanges() > 0)
 {
 return Ok(Counting);
 }
 else
 {
 return BadRequest("خطا در ذخیره عکس");
 }
 }
 }
 else
 {
 return BadRequest("مسیر آپلود عکس وجود ندارد");
 }
 }
 catch (Exception ex)
 {
 return BadRequest(ex.Message);
 }
 }



این نکته فراموش نشه که این 3 تا خط کد رو هم بنویسین توی web config:

 <appSettings>
 
 <add key="FTPAddress" value=" " />
 
 <add key="FTPUser" value=" " />
 
 <add key="FTPPassword" value=" " />
 
 </appSettings>