enviar arquivo via http multipart/form-data

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

jairxpereira
Usuário Nível 1
Usuário Nível 1
Mensagens: 36
Registrado em: 16 Out 2020 10:40
Localização: São Paulo/SP

enviar arquivo via http multipart/form-data

Mensagem por jairxpereira »

Olá pessoal,

Alguém sabe como eu envio um arquivo com o protocolo http com esta configuração

oServer := Win_OleCreateObject("Msxml2.ServerXMLHTTP.6.0")
oServer:SetRequestHeader("Content-Type", "multipart/form-data")

Estou tentando enviar o XML da nota fiscal emitida para o Mercado Livre.


Obrigado,
Jair Pereira
Avatar do usuário
dbsh
Usuário Nível 3
Usuário Nível 3
Mensagens: 128
Registrado em: 14 Jul 2004 14:19
Localização: ES

Re: enviar arquivo via http multipart/form-data

Mensagem por dbsh »

Não posso garantir que vai funcionar 100%, foi tirada da minha lib, não testei a execução da funcão separada do meu sistema.
Esta compilando em harbour 3.2.0, ultima versao no git, sem erro.

Compilar: hbmk2 -l hbwin.hbc pctoledo.prg
Anexos
pctoledo.prg
(12.42 KiB) Baixado 16 vezes
010011110010000001110011011101010110001101100101011100110111001101101111001000001110100100100000011000110110111101101110011100110111010001110010011101011110110101100100011011110010000001100001001000000110111001101111011010010111010001100101
01001101011000010111001001100011011011110111001100100000010000010110111001110100011011110110111001101001011011110010000001000100011001010010000001000010011011110110111001101001
0101010001100101011011000011101000100000001010000011001000110111001010010011100100101101001110010011100000110100001100110010110100110101001100100011100100110000
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Re: enviar arquivo via http multipart/form-data

Mensagem por Kapiaba »

Algo assim?

Código: Selecionar todos

#include "fivewin.ch"

FUNCTION Main()

   LOCAL oHTTP := HTTPRequest():New()
   LOCAL cURL := "http://your-server.com/upload" // Replace with your target URL
   LOCAL cBoundary := "----WebKitFormBoundary7MA4YWxkTrZu0gW" // A unique boundary string

   // Set the Content-Type header for multipart/form-data
   // The boundary is crucial for separating different parts of the request
   oHTTP:SetRequestHeader("Content-Type", "multipart/form-data; boundary=" + cBoundary)

   // Construct the request body with multiple parts
   // Each part represents a form field or a file
   LOCAL cBody := ""
   cBody += "--" + cBoundary + CRLF
   cBody += "Content-Disposition: form-data; name=\"username\"" + CRLF + CRLF
   cBody += "testuser" + CRLF

   cBody += "--" + cBoundary + CRLF
   cBody += "Content-Disposition: form-data; name=\"file\"; filename=\"my_file.txt\"" + CRLF
   cBody += "Content-Type: text/plain" + CRLF + CRLF
   cBody += "This is the content of my file." + CRLF

   cBody += "--" + cBoundary + "--" + CRLF // End boundary

   // Send the request
   IF oHTTP:Send("POST", cURL, cBody)
      MsgBox("Request sent successfully. Response: " + oHTTP:GetResponseText())
   ELSE
      MsgBox("Error sending request: " + oHTTP:GetErrorText())
   ENDIF

   RETURN NIL
https://fivewin.com.br/index.php?/topic ... pinhaispr/

https://fivewin.com.br/index.php?/topic ... 3o-seguro/

http://www.pctoledo.com.br/forum/viewto ... &mobile=on

https://forums.fivetechsupport.com/~fiv ... 28#p247228

https://www.fivetechsupport.com/forums/ ... p?p=265845

Regards, saludos.
Responder