MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


4 participantes

    Envio de Arquivo - via Metodo POST

    avatar
    LucianoSilva43
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 14/01/2017

    Envio de Arquivo - via Metodo POST Empty Envio de Arquivo - via Metodo POST

    Mensagem  LucianoSilva43 27/4/2023, 13:47

    Prezados,

    Estou a procurar meios de desenvolver um código para enviar arquivo via POST, porém, não consegui encontrar nada que me auxiliasse, gostaria da ajuda de voces.

    Segue programação via POSTMAN que tem dado certo.

    Código:

    curl --location '[URL]' \
    --header 'accept: application/json' \
    --header 'Authorization: [codigo]' \
    --form 'media=@"sJAUKfZKD/FileProvider.pdf"'

    O que não estou conseguindo fazer é enviar um arquivo PDF na parte "--form", o desenvolvedor pede que seja em "$binary".

    Como poderia fazer?

    Segue testes sem sucesso:

    Código:

    Public Function ConvertFileToBase64(strFilePath As String) As String
    'Alvaro Teixeira (ahteixeira) 2018 para MaximoAccess
    'Origem: https://medium.com/cainhill/how-to-use-vba-to-convert-a-file-to-base-64-d124c9b2958a
    'Requer referencia Microsoft XML library
        
        Const UseBinaryStreamType = 1

        Dim streamInput: Set streamInput = CreateObject("ADODB.Stream")
        Dim xmlDoc: Set xmlDoc = CreateObject("Microsoft.XMLDOM")
        Dim xmlElem: Set xmlElem = xmlDoc.createElement("tmp")
        
        streamInput.Open
        streamInput.Type = UseBinaryStreamType
        streamInput.LoadFromFile strFilePath
        xmlElem.DataType = "bin.base64"
        xmlElem.nodeTypedValue = streamInput.Read
        ConvertFileToBase64 = Replace(xmlElem.text, vbLf, "")
        
        Set streamInput = Nothing
        Set xmlDoc = Nothing
        Set xmlElem = Nothing
        
    End Function


    Código:


    Private Sub Comando45_Click()

    Dim Caminho As String

    Caminho = "[caminho]"

    Arquivo = ConvertFileToBase64(Caminho)

    Dim strJson As Variant


    With CreateObject("WinHttp.WinHttpRequest.5.1")
        .Open "POST", "[URL]", False
        .setRequestHeader "accept", "application/json"
        .setRequestHeader "Content-Type", "multipart/form-data"
        .setRequestHeader "Authorization", "[codigo]"

        .Send Arquivo
        
        MsgBox .responseText
    End With

    End Sub

    Agradeço desde já pela ajuda.
    avatar
    adriano.ig
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 88
    Registrado : 01/03/2016

    Envio de Arquivo - via Metodo POST Empty Re: Envio de Arquivo - via Metodo POST

    Mensagem  adriano.ig 27/4/2023, 21:38

    Boa tarde Luciano! Estou testando também algo do tipo. Tente isso:

    Código:

    Function ReadFile(ByVal sPath As String) As Byte()
        Dim fso As Object
        Set fso = CreateObject("Scripting.FileSystemObject")

        Dim oStream As Object
        Set oStream = CreateObject("ADODB.Stream")
        oStream.Type = 1
        oStream.Open
        oStream.LoadFromFile sPath

        ReadFile = oStream.Read

        oStream.Close
        Set oStream = Nothing
        Set fso = Nothing
       
       
    End Function



    Comando:

    Código:

    Private Sub Comando4_Click()

    Dim xmlHttp As MSXML2.XMLHTTP60
    Set xmlHttp = New MSXML2.XMLHTTP60

    xmlHttp.Open "POST", "http://exemplo.com/upload.php", False
    xmlHttp.setRequestHeader "Content-Type", "multipart/form-data"

    Dim fileData() As Byte
    fileData = ReadFile("C:\Cadastro\IG\A Primeira Pedra.docx") 'Altere o caminho do arquivo

    xmlHttp.send fileData

    MsgBox "Arquivo enviado com sucesso"
    End Sub



    Certifique-se de alterar a URL para a qual deseja enviar o arquivo e o caminho do arquivo que deseja enviar. O servidor remoto deve ter um script PHP ou outra linguagem do lado do servidor que possa lidar com o arquivo enviado.

    Vai precisar adicionar a referência Microsoft XML, v6.0
    marcelo3092
    marcelo3092
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 294
    Registrado : 19/08/2010

    Envio de Arquivo - via Metodo POST Empty Re: Envio de Arquivo - via Metodo POST

    Mensagem  marcelo3092 28/4/2023, 00:29

    Eu uso outra forma de enviar via upload no servidor configure um usuario e de permissão a pasta para esse usuario eu uso essa função para enviar foto creio que para arquivo tambem da.

    Private Function Upload_FTP_Candidatos(ByVal File As String)

    Dim oFile As String
    Dim dFile As String

    40 oFile = File

    dFile = Dir(File, vbArchive)


    Dim hConnection As Long, hOpen As Long, sOrgPath As String
    Dim serverftp As String
    Dim userFTP As String
    Dim pwFTP As String
    ' Dim ftpFolder

    60 serverftp = DLookup("[Servidor]", "parametros_FTP", "[Pasta]='CandidatoFoto'")
    70 userFTP = DLookup("[userFTP]", "parametros_FTP", "[Pasta]='CandidatoFoto'")
    80 pwFTP = DLookup("[pwFTP]", "parametros_FTP", "[Pasta]='CandidatoFoto'")
    ' ftpFolder = DLookup("[Valor]", "parametros_FTP", "[ID]=4")

    If VerificaInternet = 0 Then
    MsgBox "O servidor " & serverftp & " não está respondendo." & vbCr & "O envio não será realizado. Verifique sua conexão com a internet.", vbInformation, NomeAplicativo
    DoCmd.CancelEvent
    120 Exit Function
    130 End If


    'Abre a conexão com a internet
    140 hOpen = InternetOpen("API-Guide sample program", INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
    'Abre a conexão com o servidor FTP
    150 hConnection = InternetConnect(hOpen, serverftp, INTERNET_DEFAULT_FTP_PORT, userFTP, pwFTP, INTERNET_SERVICE_FTP, IIf(PassiveConnection, INTERNET_FLAG_PASSIVE, 0), 0)

    'Inicializar o Buffer
    160 sOrgPath = String(MAX_PATH, 0)

    'Caminha para o diretorio padrão
    170 FtpGetCurrentDirectory hConnection, sOrgPath, Len(sOrgPath)


    'envia o arquivo: arqenv= arquivo de origem e arqbroo arquivo de destino
    180 FtpPutFile hConnection, oFile, dFile, FTP_TRANSFER_TYPE_UNKNOWN, 0

    'Fecha a conexão
    190 InternetCloseHandle hConnection
    200 InternetCloseHandle hOpen

    End Function




    aqui chamo a função e indico o arquivo.
    VarCaminhoNovo = CurrentProject.Path & "\Img\Convertida\" & Me.cpf & ".jpg"

    Call Upload_FTP_Candidatos(VarCaminhoNovo)


    ai o
    avatar
    LucianoSilva43
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 14/01/2017

    Envio de Arquivo - via Metodo POST Empty Re: Envio de Arquivo - via Metodo POST

    Mensagem  LucianoSilva43 4/5/2023, 12:24

    Prezados estarei verifcando as sujestões e dou um feedback.

    Desde já agradeço pela ajuda.
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3845
    Registrado : 22/11/2016

    Envio de Arquivo - via Metodo POST Empty Re: Envio de Arquivo - via Metodo POST

    Mensagem  DamascenoJr. 3/7/2023, 01:58

    Algum avanço aqui?

    study


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    LucianoSilva43
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 14/01/2017

    Envio de Arquivo - via Metodo POST Empty Re: Envio de Arquivo - via Metodo POST

    Mensagem  LucianoSilva43 4/7/2023, 17:07

    Ainda nada.. nenhum método que testei funcionou. pale
    marcelo3092
    marcelo3092
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 294
    Registrado : 19/08/2010

    Envio de Arquivo - via Metodo POST Empty Re: Envio de Arquivo - via Metodo POST

    Mensagem  marcelo3092 5/7/2023, 02:21

    Boa noite amigo qual servidor que vc usa para enviar tal arquivo eu uso o hostgator. nele
    vc abre o cpanel que e o painel de controle do site. la vc procura por gerenciador de arquivos ai na pasta public http cria uma pasta com nome que quiser.
    ai basta clicar com botão direito em cima dela aparece se nao me engano changer permisson e so selecionar todos as opções ai vai em contas ftp e criar um usuario para acessala e coloca o endereço dela tipo
    public_html/documentos. ai o acesso da pasta pode ser testado via html tipo http://marcelo.com.br/documentos/

    e bem complexo mais funciona eu uso a função que te enviei antes para enviar via ftp e faço o donwload dela novamente via o link do arquivo.
    quiser mais detalhes poste uma parte do seu projeto para analisar.

    Conteúdo patrocinado


    Envio de Arquivo - via Metodo POST Empty Re: Envio de Arquivo - via Metodo POST

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/3/2024, 11:47