FWRest - Envio Arquivo CSV

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?

:warning: 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)