Отправка данных на сервер - VB

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Столкнулся с первого взгляда - достаточно простой задачей, но "гусей" собрать не получается.
Есть необходимость выложить некоторые данные (текст, двоичные данные) на сервер посредством MSXML2.ServerXMLHTTP и PHP скрипта на серверной стороне.


и всё вроде-как работает, но

myfile.bin

имеет кодировку UTF-8, и никакие
погоды не делают (iconv и mb_convert_encoding в php-скрипте тоже не помогли). Вопрос: что я делаю не так, и каким образом скрипт PHP может получить/записать во внешний файл текст в "Windows-1251" кодировке, ну и второй вопрос - передача бинарных данных (а именно file-upload). Если у кого есть опыт - поделитесь решением.

Решение задачи: «Отправка данных на сервер»

textual
Листинг программы
Private Function PostFile(Url As String, FileName As String, Optional ByVal Async As Boolean) As String
    Const STR_BOUNDARY  As String = "MYBOUNDARY"
    Dim nFile           As Integer
    Dim Buffer()        As Byte
    Dim PostData        As String
    Dim XMLHTTP         As New XMLHTTP
    
    nFile = FreeFile
    Open FileName For Binary Access Read As nFile
    If LOF(nFile) > 0 Then
        ReDim baBuffer(0 To LOF(nFile) - 1) As Byte
        Get nFile, , Buffer
        PostData = StrConv(Buffer, vbUnicode)
    End If
    Close nFile
    
    PostData = "--" & STR_BOUNDARY & vbCrLf & _
        "Content-Disposition: form-data; name=""uploadfile""; filename=""" & Mid$(FileName, InStrRev(FileName, "\") + 1) & """" & vbCrLf & _
        "Content-Type: application/octet-stream" & vbCrLf & vbCrLf & _
        PostData & vbCrLf & _
        "--" & STR_BOUNDARY & "--"
    
    With XMLHTTP
        .Open "POST", Url, Async
        .SetRequestHeader "Content-Type", "multipart/form-data; boundary=" & STR_BOUNDARY
        .Send ToByteArray(PostData)
        If Not Async Then
            PostFile = .ResponseText
        End If
    End With
End Function
 
Private Function ToByteArray(sText As String) As Byte()
    ToByteArray = StrConv(sText, vbFromUnicode)
End Function
..........
PostFile "http://127.0.0.1/upload2.php?DIR=.", App.Path & "\apache.gif"

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.143 из 5
Похожие ответы