ارسال و دریافت فایل‌ها با استفاده از کتابخانه Go Resty

ارسال فایل‌های چند قسمتی

بارگذاری فایل‌ها از طریق درخواست POST چند بخشی

// ابتدا دو فایل را بخوانید
profileImgBytes، _ := os.ReadFile("/Users/jeeva/test-img.png")
notesBytes، _ := os.ReadFile("/Users/jeeva/text-file.txt")

// یک مشتری Resty ایجاد کنید
client := resty.New()

// از SetFileReader برای تنظیم فایل و پارامترهای خودکار بارگذاری استفاده کنید
// از SetFormData برای تنظیم سایر پارامترهای فرم استفاده کنید
resp، err := client.R().
      SetFileReader("profile_img", "test-img.png", bytes.NewReader(profileImgBytes)).
      SetFileReader("notes", "text-file.txt", bytes.NewReader(notesBytes)).
      SetFormData(map[string]string{
          "first_name": "Jeevanandam",
          "last_name": "M",
      }).
      Post("http://www.tizi365.com/upload")

بارگذاری مستقیم فایل‌های محلی

این نسبت به بالا راحت‌تر است، زیرا به طور مستقیم می‌تواند فایل‌های محلی را بدون نیاز به خواندن فایل بارگذاری کند.

// یک مشتری Resty ایجاد کنید
client := resty.New()

// از SetFile برای تنظیم فایل برای بارگذاری و فیلد پارامتر متصل استفاده کنید
resp، err := client.R().
      SetFile("profile_img", "/Users/jeeva/test-img.png").
      Post("http://myapp.com/upload")

// بارگذاری دسته‌ای فایل‌ها با استفاده از SetFiles
resp، err := client.R().
      SetFiles(map[string]string{
        "profile_img": "/Users/jeeva/test-img.png",
        "notes": "/Users/jeeva/text-file.txt",
      }).
      Post("http://myapp.com/upload")

// بارگذاری دسته‌ای فایل‌ها و همزمان تنظیم سایر پارامترهای فرم
resp، err := client.R().
      SetFiles(map[string]string{
        "profile_img": "/Users/jeeva/test-img.png",
        "notes": "/Users/jeeva/text-file.txt",
      }).
      SetFormData(map[string]string{
        "first_name": "Jeevanandam",
        "last_name": "M",
        "zip_code": "00001",
        "city": "شهر من",
        "access_token": "C6A79608-782F-4ED0-A11D-BD82FAD829CD",
      }).
      Post("http://myapp.com/profile")

دریافت فایل‌ها

// یک مشتری Resty ایجاد کنید
client := resty.New()

// دایرکتوری خروجی فایل را تنظیم کنید، اگر وجود نداشته باشد، Resty آن را به صورت خودکار ایجاد می‌کند
// این تنظیم اختیاری است اگر پارامتر SetOutput با یک مسیر مطلق تنظیم شود.
client.SetOutputDirectory("/Users/tizi365/Downloads")

// یک درخواست HTTP ارسال کرده و نتیجه درخواست را در مسیر فایل تنظیم شده توسط پارامتر SetOutput ذخیره کنید
_, err := client.R().
          SetOutput("plugin/ReplyWithHeader-v5.1-beta.zip").
          Get("http://bit.ly/1LouEKr")

// یک نمونه با استفاده از یک مسیر مطلق
_, err := client.R().
          SetOutput("/MyDownloads/plugin/ReplyWithHeader-v5.1-beta.zip").
          Get("http://bit.ly/1LouEKr")