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")