Запись файла на сервер с помощью Internetwritefile

Тема в разделе "Visual Basic", создана пользователем ИгорьС, 15 июл 2010.

  1. ИгорьС

    ИгорьС New Member

    Регистрация:
    15 июл 2010
    Сообщения:
    2
    Симпатии:
    0
    Код (LotusScript):
    ' Пытаюсь писать файл на сервер (пишу через HTTP-прокси)
    Public Declare Function HttpSendRequestEx Lib "wininet.dll" Alias "HttpSendRequestExA" ( _
    ByVal hRequest As Long, ByRef lpBuffersIn As INTERNET_BUFFERS, _
    ByRef lpBuffersOut As INTERNET_BUFFERS, _
    ByVal dwFlags As Long, ByVal dwContext As Long) As Long
    ... 'Открываю запрос
    hReq = HttpOpenRequest(hConnection, "POST", strURL, vbNullString, vbNullString, _
    0&, INTERNET_FLAG_NO_CACHE_WRITE, 0)
    '   Отправляю запрос
    iReq = HttpSendRequest(hReq, vbNullString, 0, vbNullString, 0)
    '   Читаю файл в текстовую переменную
    Open "c:\text.ext" For Binary Access Read As #71: fLen = LOF(71): sFile = InputB(fLen, #71)
    Close #71
    '   Заполняю структуру (изъято из примера на С++)
    BufferIn.dwStructSize = Len(BufferIn)  '; // Must be set or error will occur
    BufferIn.Next = 0& 'Null ';
    BufferIn.lpcszHeader = 0& 'Null ';
    BufferIn.dwHeadersLength = 0 ';
    BufferIn.dwHeadersTotal = 0 ';
    BufferIn.lpvBuffer = 0& 'Null ';
    BufferIn.dwBufferLength = 0 ';
    BufferIn.dwBufferTotal = fLen '; // This is the only member used other than dwStructSize
    BufferIn.dwOffsetLow = 0 ';
    BufferIn.dwOffsetHigh = 0 ';
    '  Отправляю расширение запроса
    LRet = HttpSendRequestEx(hReq, BufferIn, 0&, 0, 0)
    ' Пишу файл пакетами по 2К
    Dim dBuffer As Long, pBuffer() As Byte
    dBuffer = 2048: ReDim pBuffer(1 To dBuffer)
    i = 0
    Do
    i = i + 1:  pos = 2048 * (i - 1) + 1
    If fLen - pos < 2048 Then dBuffer = fLen - pos: ReDim pBuffer(1 To dBuffer + 1)
    Get #71, , pBuffer
    iRet = InternetWriteFile(hReq, pBuffer(1), dBuffer, dwBytesWritten)
    If iRet = 0 Then
    ErrorOut Err.LastDllError, "InternetWriteFile"
    GoTo 89
    End If
    If Not fLen - pos > 2048 Then Exit Do
    Loop
    ... если файл меньше 2К, то все проходит без ошибок и ошибку 87 выдает только после этого
    Код (LotusScript):
    iRet = HttpEndRequest(hReq, 0&, 0, 0)
    ... если же файл более 2К, то на второй записи происходит ошибка -
    12030 - Тhe conntction with the server was tarmenated abnormally
    Подскажите пожалуйста хотя бы где искать?
     
Загрузка...

Поделиться этой страницей