Jump to content

Recommended Posts

Posted

Boa tarde, eu envio via HTTP(POST), um documento/ficheiro, cujo envio também o nome do documento/ficheiro no header do HTTP request.

Eu consigo ir buscar todos os atributos do header através da função "$headers = getallheaders();".

Até aqui tudo bem, mas eu queria ir buscar apenas o campo "[Name]", mas não estou a conseguir.

De seguida segue o meu header:
Obrigado desde já.

Array (

[Content-Type] => application/x-www-form-urlencoded, multipart/form-data;

[Content-Length] => 9615600

[Ua-Cpu] => AMD64

[Name] => C:\Users\ASUS\Desktop\Documentos.zip

[User-Agent] => Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Win64; x64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)

[Accept-Language] => pt-PT

[Accept-Encoding] => gzip, deflate

[Accept] => */*

[Connection] => Close

[Cache-Control] => no-cache

)
Posted

Olá demyz0r,

é um pouco estranho estares a ir aos header buscar essa informação. Deverias ter tudo o que precisas nas variáveis $_POST e $_FILES.

De qualquer modo, fazendo

getallheaders()['name']

irás buscar o valor pretendido...

Posted (edited)
13 minutos atrás, tiago.f disse:

Olá demyz0r,

é um pouco estranho estares a ir aos header buscar essa informação. Deverias ter tudo o que precisas nas variáveis $_POST e $_FILES.

De qualquer modo, fazendo


getallheaders()['name']

irás buscar o valor pretendido...

Eu por um programa exterior envio ficheiros ao servidor, e vai o ficheiro em binário, e o header do Post. Eu já tentei esta função "$input = print_r($_FILES, true);"

Mas com ela não consigo ir enviar o ficheiro, então tive de improvisar e fiz isto:

Só assim consigo receber o ficheiro do lado do servidor.

$input = file_get_contents('php://input');

$i = strpos($input, "\r\n\r\n");
if ($i !== false)
	$input = substr($input, $i + 4);

file_put_contents('resultado.zip', $input);
Edited by demyz0r
Posted
4 horas atrás, HappyHippyHippo disse:

qual o modelo/código usado para o envio do ficheiro ?

Penso que te estejas a referir a isto:

 

Public Function pvPostFile(sUrl As String, sFileName As String, Optional ByVal bAsync As Boolean) As String
    'Const STR_BOUNDARY  As String = "3fbd04f5-b1ed-4060-99b9-fca7ff59c113"
    Dim nFile           As Integer
    Dim baBuffer()      As Byte
    Dim sPostData       As String
 
    '--- read file
    nFile = FreeFile
    Open sFileName For Binary Access Read As nFile
    If LOF(nFile) > 0 Then
        ReDim baBuffer(0 To LOF(nFile) - 1) As Byte
        Get nFile, , baBuffer
        sPostData = StrConv(baBuffer, vbUnicode)
    End If
    Close nFile
    
    '--- prepare body
    sPostData = "Content-Disposition: form-data; filename=""" & Mid$(sFileName, InStrRev(sFileName, "\") + 1) & vbCrLf & _
        "Content-Type: application/octet-stream" & vbCrLf & vbCrLf & _
        sPostData & vbCrLf

    '--- post
    With CreateObject("MSXML2.XMLHTTP.6.0")
        .Open "POST", sUrl, bAsync
        .SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        .SetRequestHeader "Content-Type", "multipart/form-data;"
        .SetRequestHeader "Name", FindLastModified
        .SetRequestHeader "Connection", "close"
        .Send pvToByteArray(sPostData)
        If Not bAsync Then
            pvPostFile = .ResponseText
        End If
    End With
End Function


 
Private Function pvToByteArray(sText As String) As Byte()
    pvToByteArray = StrConv(sText, vbFromUnicode)
End Function

É em VBA, o código que uso para enviar os ficheiros para o servidor

Posted
16 horas atrás, HappyHippyHippo disse:

pelo que parece, tudo indica que tens a info que necessitas na variável $_FILES do php

Podes-me dizer qual é essa informação necessária em concreto?

Posted
16 minutos atrás, HappyHippyHippo disse:

o que necessitas, o nome do ficheiro

No entanto o meu nome do ficheiro vai com o caminho, será disso? Pois eu envio o FindLastModified e ele devolve o caminho inteiro e não só o nome do ficheiro.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.