آپلود فایل به وسیله یک Web Method

امروزه وب سرویس ها بر اساس برنامه ها بیشتر مورد استفاده قرار می گیرند. هم برنامه های Desktop و وب از وب سرویس به عنوان لایه منطقی خود استفاده می کنند. بنابراین مهم ترین چیزی که توسعه دهندگان برای برنامه هایشان نیاز دارند، آپلود یک فایل به سمت سرور است. در این مقاله، ما نشان خواهیم داد چگونه یک فایل را توسط یک متد وب در یک SOAP web service ارسال کنید.

آپلود فایل به وسیله یک Web Method

استفاده از کد

کد آن بسیار آسان برای استفاده است، solution شامل دو پروژه است.

وب سرویس

برنامه سمت کلاینت ویندوز

ما قصد داریم تا ابتدا وب سرویس را معرفی کنیم. وب سرویس یک متد ساده وب است که شما می توانید بصورت زیر مشاهده کنید:

[WebMethod]

public bool UpuloadFile(string fileName, byte[] fileContent)
{
    string filesDirectory = ConfigurationManager.AppSettings["store_directory"];
    System.IO.File.WriteAllBytes(string.Format("{0}{1}", filesDirectory, fileName), fileContent);

    return true;
}

این متد 2 پارامتر دارد، یکی fileName که یک رشته است و دیگری شامل نام فایل است که محتوا آن مجموعه ای از بایت ها است. همچنین در خط اول، در کد مسیر قرارگیری و ذخیره شدن فایل قرار گرفته است. اگر بخواهید یک کد اصولی را بنویسید، تنها باید به آن یک Try-Catch اضافه کنید.

در بخش برنامه سمت کاربر باید سه مرحله را طی کنیم.

اضافه کردن وب سرویس به پروژه و ارجاع دادن مرجع آن

اضافه کردن یک فرم که با استفاده از default form می توانید ان را پیدا کنید

همان طور که مشاهده می کنید در MainForm پروژه، این فرم دارای مقداری کد دیگر نیز هست. اما خطوط اصلی در رویداد btnUpload_click وجود دارد.

private void btnUpload_Click(object sender, EventArgs e)
{
    FileService.FileService wsFileService = new FileService.FileService();

    byte[] contents = System.IO.File.ReadAllBytes(txtFilePath.Text);
    string fileName = System.IO.Path.GetFileName(txtFilePath.Text);

    wsFileService.UpuloadFileCompleted += WsFileService_UpuloadFileCompleted;

    wsFileService.UpuloadFileAsync(fileName, contents);

}

در خط اول، یک نمونه از FileService ساختیم. در دو خط بعدی یک فایل را توسط آرایه ای از بایت ها خواندیم و نام فایل را در textbox قرار دادیم.

بنابراین در خط بعدی، ما یک رویداد را شناسایی کردیم برای رویداد کامل شده از متدی که بصورت Asynchronous صدا زدیم. صدا زدن به شکل Asynchronous به ما کمک می کند تا  برنامه متد وب را در یک thread  جدید صدا بزند. در این مورد دیگر توقفی میان برنامه اصلی ایجاد نمی شود. در خط انتهایی، ما یک متد وب را با دو پارامتر صدا زدیم.

اگر شما WsFileService_UploadFileCompeleted method را مرور کنید، شما کد های ساده ای را پیدا می کنید. آن ها فقط صدا زده شده اند زمانی که متد ها فراخوانی شدند اگر نتیجه True بود، یک پیغام در message box نمایش می دهد.

آموزش سی شارپ

فایل های ضمیمه