将文件从VBA发送到PHP

将文件从VBA发送到PHP,php,vba,http-headers,http-post,server-side,Php,Vba,Http Headers,Http Post,Server Side,大家好,我使用该代码将zip文件发送到我的服务器,从这里: 我用它向服务器发送zip文件,但我的服务器端有一个脚本无法接收我的文件,不知道问题是来自VBA还是PHP。我会让你们使用这两种代码,试着从你们那里得到帮助。非常感谢 Public Function pvPostFile(sUrl As String, sFileName As String, Optional ByVal bAsync As Boolean) As String 'Const STR_BOUNDARY As Stri

大家好,我使用该代码将zip文件发送到我的服务器,从这里:

我用它向服务器发送zip文件,但我的服务器端有一个脚本无法接收我的文件,不知道问题是来自VBA还是PHP。我会让你们使用这两种代码,试着从你们那里得到帮助。非常感谢

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
我的服务器端代码:

error_reporting(E_ALL);
ini_set('display_errors', '1');

$headers = getallheaders();
$input = print_r($_FILES, true);
$sDate = date('Y-m-d H:i:s');
这是我的服务器端代码的一部分。但我认为问题就在这里,因为我无法使用“$input=print\r($\u FILES,true);”获取文件。 相反,我使用它来接收文件,但它不是应该的方式:

$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);

迷人的。我对PHP不太了解,但您是否从网页上测试了服务器端代码?这可能有助于诊断。是的,我有一个简单的网页来测试它,我并没有得到任何错误,但同时我无法收到我的文件。同时,如果我使用我写的第二个代码,我可以得到文件,但这不是最好的方法。你在运行什么PHP服务器?@SMeaden Meaden,我不确定。我正在NAS服务器上运行PHP。我是PHP的新手。我对PHP不太了解,但您是否从网页上测试了服务器端代码?这可能有助于诊断。是的,我有一个简单的网页来测试它,我并没有得到任何错误,但同时我无法收到我的文件。同时,如果我使用我写的第二个代码,我可以得到文件,但这不是最好的方法。你在运行什么PHP服务器?@SMeaden Meaden,我不确定。我正在NAS服务器上运行PHP。我是PHP的新手。