将文件从VBA发送到PHP
大家好,我使用该代码将zip文件发送到我的服务器,从这里: 我用它向服务器发送zip文件,但我的服务器端有一个脚本无法接收我的文件,不知道问题是来自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
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的新手。