Boa tarde.
Tenho que enviar um arquivo csv para uma API.
O Token consegui obter tranquilamente e consulta de dados, apenas o envio do arquivo que não consigo.
Em Pyhton e no postman funciona normalmente.
Documentação:
REQUEST:
Header: Authorization Bearer TokenRetornado
Endpoint: /api/fileimport
Method: POST
Form-data:
layout: SUBSTITUIR COM O CÓDIGO DO LAYOUT DESEJADO
file: File Collection
RESPONSE
JSON:
{
"Status": 2,
"Message": "Arquivo enviado com sucesso"
}
Em python, consegui fazer da seguinte maneira:
import requests
url = "https://apiteste.com.br/api/fileimport"
dados = {'layout': '101'}
arquivos=[
('name',('colaborador.csv',open('D:/p33/colaborador.csv','rb'),'text/csv'))
]
cabeçalhos = {
'Authorization': 'Bearer PmrWYqaLRc000008200130E6DAADF749B99E0630400A8C00F23eNHGwLurwT129E6DABDF759B91E16'
}
resposta = requests.request("POST", url, headers=cabeçalhos, data=dados, files=arquivos)
print(resposta.text)
Alguém tem algum exemplo de como efetuar o envio de arquivo desse formado?
Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.
1 curtida
Veja o exemplo do TDN.
Só precisa abrir o arquivo e adiciona-lo no setresponse.
https://centraldeatendimento.totvs.com/hc/pt-br/articles/360020278071-Cross-Segmento-TOTVS-Backoffice-Linha-Protheus-ADVPL-Enviar-arquivos-via-rest
// BIBLIOTECAS NECESSÁRIAS
#Include "TOTVS.ch"
#Include "RESTFUL.ch"
// DECLARAÇÃO DO SERVIÇO REST
WSRESTFUL DOWNLOAD_FILE DESCRIPTION "Serviço para teste de envio de arquivo."
// DECLARAÇÃO DO MÉTODO GET
WSMETHODGET DESCRIPTION"Retorna um arquivo por meio do método FwFileReader()."
END WSRESTFUL
// MÉTODO GET
WSMETHOD GET WSREST DOWNLOAD_FILE
Local cFile := ""// VALORES RETORNADOS NA LEITURA
Local oFile := FwFileReader():New("/NR5.pdf") // CAMINHO ABAIXO DO ROOTPATH
// SE FOR POSSÍVEL ABRIR O ARQUIVO, LEIA-O
// SE NÃO, EXIBA O ERRO DE ABERTURA
If (oFile:Open())
cFile := oFile:FullRead() // EFETUA A LEITURA DO ARQUIVO
// RETORNA O ARQUIVO PARA DOWNLOAD
Self:SetHeader("Content-Disposition", "attachment; filename=NR5.pdf")
Self:SetResponse(cFile)
lSuccess := .T. // CONTROLE DE SUCESSO DA REQUISIÇÃO
Else
SetRestFault(002, "can't load file") // GERA MENSAGEM DE ERRO CUSTOMIZADA
lSuccess := .F. // CONTROLE DE SUCESSO DA REQUISIÇÃO
EndIf
Return (lSuccess)