Sehr große Dateien (> 300 MB) mit WinHHTP per POST versenden

  • VB6

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Twometer.

    Sehr große Dateien (> 300 MB) mit WinHHTP per POST versenden

    Ich muss aus einer VB6 Anwendung sehr goße Dateien (> 300 MB) per POST an einen Webserver senden.
    Das Ganze funktioniert hervorragend mit der WinHTTP 5.1 COM-Schnittstelle - solange die Datei nicht allzugroß ist, da die zu sendenen Daten hier via String oder Bytes in einem Rutsch übergeben werden müssen. Bei großen Dateien streikt hier allerdings die VB-Umgebung mit der Fehlermeldung 7 (nicht genügend Speicher).

    Kennt jemand eine Möglichkeit per WinHTTP 5.1 große Dateien in kleinere Portionen per POST an einen Webserver zu senden?
    (ggf. auch per WinHTTP 5.1 API anstelle der COM-Schnittstelle)

    Ich habe bewußt auf WinHTTP zurückgegriffen, da neben dem Senden der Daten per POST noch folgende Voraussetzungen erfüllt werden müssen:
    HTTPs
    Unterstützung von Proxy

    Auszug aus meiner Routine:

    Visual Basic-Quellcode

    1. Set WinHttp = New WinHttpRequest
    2. With WinHttp
    3. ' Proxy-Server?
    4. If Len(m_Proxy) > 0 And m_UseProxyServer Then
    5. .SetProxy HTTPREQUEST_PROXYSETTING_PROXY, m_Proxy
    6. End If
    7. .Open "POST", sURL, True
    8. ' Http-Authentifizierung?
    9. If Len(UserName) > 0 And Len(UserPwd) > 0 Then
    10. .SetCredentials UserName, UserPwd, HTTPREQUEST_SETCREDENTIALS_FOR_SERVER
    11. End If
    12. ' Proxy-Authentifizierung?
    13. If (m_UseProxyAuth) And Len(m_ProxyUser) > 0 And Len(m_ProxyPwd) > 0 Then
    14. .SetCredentials m_ProxyUser, m_ProxyPwd, HTTPREQUEST_SETCREDENTIALS_FOR_PROXY
    15. End If
    16. ' Datei auslesen und senden
    17. F = FreeFile
    18. Open strLocalFile For Binary As #F
    19. nSize = LOF(F)
    20. ReDim vData(nSize - 1)
    21. Get #F, nSize, vData
    22. Close #F
    23. .send vData
    24. .WaitForResponse
    25. End With
    Hi,
    Du hast gesagt, dass das nur mit WinHTTP geht, aber die .NET-HTTPWebRequest kann auch Proxies und HTTPS. Aber zu deinem Hauptproblem: Unterstützt dein Webserver Daten, die auf mehrere Packets aufgeteilt werden? Wenn ja, kannst du http multipart POST-Requests verwenden (bissl googlen, da gibt es gute Ergebnisse zu: Klick), um deine Daten zu senden. Diese Methode wurde extra für Dateübertragungen eingeführt.

    LG
    Twometer
    An Error 404 occurred while loading signature...