Questo capitolo introduce i metodi per caricare e scaricare file utilizzando la libreria Go Resty.

Caricamento di File Multipli

Caricare file tramite richiesta POST multipart

// Leggere prima due file
profileImgBytes, _ := os.ReadFile("/Users/jeeva/test-img.png")
notesBytes, _ := os.ReadFile("/Users/jeeva/text-file.txt")

// Creare un client Resty
client := resty.New()

// Utilizzare SetFileReader per impostare il file e i parametri automaticamente per il caricamento
// Utilizzare SetFormData per impostare altri parametri del modulo
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")

Caricamento Diretto di File Locali

Questo è più conveniente rispetto al precedente, in quanto consente di caricare direttamente file locali senza la necessità di leggere prima il file.

// Creare un client Resty
client := resty.New()

// Utilizzare SetFile per impostare il file da caricare e il campo del parametro di richiesta associato
resp, err := client.R().
      SetFile("profile_img", "/Users/jeeva/test-img.png").
      Post("http://myapp.com/upload")

// Caricare file in blocco utilizzando 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")

// Caricare file in blocco e impostare altri parametri del modulo contemporaneamente
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": "my city",
        "access_token": "C6A79608-782F-4ED0-A11D-BD82FAD829CD",
      }).
      Post("http://myapp.com/profile")

Scaricamento di File

// Creare un client Resty
client := resty.New()

// Impostare la directory di output del file, Resty la creerà automaticamente se non esiste
// Questa impostazione è facoltativa se il parametro SetOutput è impostato con un percorso assoluto.
client.SetOutputDirectory("/Users/tizi365/Downloads")

// Inviare una richiesta HTTP qui e salvare il risultato della richiesta nel percorso del file impostato dal parametro SetOutput
_, err := client.R().
          SetOutput("plugin/ReplyWithHeader-v5.1-beta.zip").
          Get("http://bit.ly/1LouEKr")

// Ecco un esempio che utilizza un percorso assoluto
_, err := client.R().
          SetOutput("/MyDownloads/plugin/ReplyWithHeader-v5.1-beta.zip").
          Get("http://bit.ly/1LouEKr")