Este capítulo apresenta os métodos para upload e download de arquivos usando a biblioteca Go Resty.
Upload de Arquivo Multipart
Enviar arquivos via solicitação POST multipart
// Primeiro, leia dois arquivos
profileImgBytes, _ := os.ReadFile("/Users/jeeva/test-img.png")
notesBytes, _ := os.ReadFile("/Users/jeeva/text-file.txt")
// Crie um cliente Resty
client := resty.New()
// Use SetFileReader para definir o arquivo e parâmetros automaticamente para upload
// Use SetFormData para definir outros parâmetros do formulário
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")
Upload Direto de Arquivos Locais
Isso é mais conveniente do que acima, pois pode carregar diretamente arquivos locais sem a necessidade de ler o arquivo primeiro.
// Crie um cliente Resty
client := resty.New()
// Use SetFile para definir o arquivo a ser carregado e o campo de parâmetro de solicitação vinculado
resp, err := client.R().
SetFile("profile_img", "/Users/jeeva/test-img.png").
Post("http://myapp.com/upload")
// Envie vários arquivos usando 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")
// Envie vários arquivos e defina outros parâmetros do formulário ao mesmo tempo
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": "minha cidade",
"access_token": "C6A79608-782F-4ED0-A11D-BD82FAD829CD",
}).
Post("http://myapp.com/profile")
Download de Arquivos
// Crie um cliente Resty
client := resty.New()
// Defina o diretório de saída de arquivo, o Resty criará automaticamente se não existir
// Esta configuração é opcional se o parâmetro SetOutput for definido com um caminho absoluto.
client.SetOutputDirectory("/Users/tizi365/Downloads")
// Envie uma solicitação HTTP aqui e salve o resultado da solicitação no caminho do arquivo definido pelo parâmetro SetOutput
_, err := client.R().
SetOutput("plugin/ReplyWithHeader-v5.1-beta.zip").
Get("http://bit.ly/1LouEKr")
// Aqui está um exemplo usando um caminho absoluto
_, err := client.R().
SetOutput("/MeusDownloads/plugin/ReplyWithHeader-v5.1-beta.zip").
Get("http://bit.ly/1LouEKr")