Ce chapitre présente les méthodes pour téléverser et télécharger des fichiers en utilisant la bibliothèque Go Resty.

Téléverser des fichiers multiples

Téléchargez des fichiers via une requête Multipart POST

// Lire d'abord deux fichiers
profileImgBytes, _ := os.ReadFile("/Users/jeeva/test-img.png")
notesBytes, _ := os.ReadFile("/Users/jeeva/text-file.txt")

// Créer un client Resty
client := resty.New()

// Utilisez SetFileReader pour définir le fichier et les paramètres automatiquement pour le téléchargement
// Utilisez SetFormData pour définir d'autres paramètres de formulaire
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")

Téléverser directement des fichiers locaux

Ceci est plus pratique que ci-dessus, car il peut télécharger directement des fichiers locaux sans avoir besoin de les lire d'abord.

// Créer un client Resty
client := resty.New()

// Utiliser SetFile pour définir le fichier à téléverser et le champ de paramètre de requête lié
resp, err := client.R().
      SetFile("profile_img", "/Users/jeeva/test-img.png").
      Post("http://myapp.com/upload")

// Téléverser des fichiers en lot en utilisant 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")

// Téléverser des fichiers en lot et définir d'autres paramètres de formulaire en même temps
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": "ma ville",
        "access_token": "C6A79608-782F-4ED0-A11D-BD82FAD829CD",
      }).
      Post("http://myapp.com/profile")

Télécharger des fichiers

// Créer un client Resty
client := resty.New()

// Définir le répertoire de sortie du fichier, Resty le créera automatiquement s'il n'existe pas
// Ce paramètre est facultatif si le paramètre SetOutput est défini avec un chemin absolu.
client.SetOutputDirectory("/Users/tizi365/Downloads")

// Envoyer une requête HTTP ici et enregistrer le résultat de la requête dans le chemin de fichier défini par le paramètre SetOutput
_, err := client.R().
          SetOutput("plugin/ReplyWithHeader-v5.1-beta.zip").
          Get("http://bit.ly/1LouEKr")

// Voici un exemple utilisant un chemin absolu
_, err := client.R().
          SetOutput("/MyDownloads/plugin/ReplyWithHeader-v5.1-beta.zip").
          Get("http://bit.ly/1LouEKr")