Pictureupload via httpwebrequest

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Pictureupload via httpwebrequest

    Hallo, ich versuche gerade einen Pictureupload zu bewerkstelligen. Dieses Codebeispiel habe ich im Netz gefunden und mittels live http headers habe ich versucht das Konstrukt nachzubauen.. Ohne erfolg.

    Könnt ihr mir helfen?

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Net
    3. Imports System.Text
    4. Public Class Form1
    5. Structure UploadData
    6. Dim Fieldname As String
    7. Dim Filename As String
    8. Dim Content As Byte()
    9. Public Sub New(ByVal fieldname As String, ByVal filename As String, ByVal content As Byte())
    10. Me.Fieldname = fieldname
    11. Me.Filename = filename
    12. Me.Content = content
    13. End Sub
    14. End Structure
    15. Public Function GetContentType(ByVal path As String) As String
    16. Select Case New FileInfo(Path).Extension.ToLower()
    17. Case ".bmp"
    18. Return "image/bmp"
    19. Case ".gif"
    20. Return "image/gif"
    21. Case ".jpe", ".jpeg", ".jpg"
    22. Return "image/jpeg"
    23. Case ".png"
    24. Return "image/png"
    25. Case ".svg"
    26. Return "image/svg+xml"
    27. Case ".tif", ".tiff"
    28. Return "image/tiff"
    29. Case Else
    30. Return "application/octet-stream"
    31. End Select
    32. End Function
    33. Public Function GetUploadResponse(ByVal url As String, ByVal upload As UploadData) As String
    34. Dim boundary As String = Guid.NewGuid().ToString().Replace("-", "")
    35. Dim request As HttpWebRequest = CType(HttpWebRequest.Create(url), HttpWebRequest)
    36. request.Method = "POST"
    37. request.ContentType = "multipart/form-data; boundary=" & boundary
    38. request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0"
    39. Dim PostData As New MemoryStream
    40. With New StreamWriter(PostData)
    41. .Write("Host: www.directupload.net")
    42. .Write("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
    43. .Write("Accept-Language: de,en-US;q=0.7,en;q=0.3")
    44. .Write("Accept-Encoding: gzip, deflate")
    45. .Write("Referer: http://www.directupload.net/")
    46. .Write("Connection: keep-alive")
    47. .Write("Upgrade-Insecure-Requests: 1")
    48. .Write(("--" & boundary) & vbNewLine)
    49. .Write("Content-Disposition: form-data; name=""{0}""; filename=""{1}""{2}", upload.Fieldname, upload.Filename, vbNewLine)
    50. .Write(("Content-Type: " & GetContentType(upload.Filename) & vbNewLine) & vbNewLine)
    51. .Flush()
    52. .Write(vbNewLine)
    53. .Write("--{0}--{1}", boundary, vbNewLine)
    54. PostData.Write(upload.Content, 0, upload.Content.Length)
    55. .Flush()
    56. End With
    57. request.ContentLength = PostData.Length
    58. Using s As Stream = request.GetRequestStream()
    59. PostData.WriteTo(s)
    60. End Using
    61. PostData.Close()
    62. Return New StreamReader(request.GetResponse().GetResponseStream()).ReadToEnd()
    63. End Function
    64. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    65. End Sub
    66. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    67. Dim upload As New UploadData("files[]", "C:\Users\Daniel\Desktop\17952987_1337511523003217_4207780162341162631_n.jpg", File.ReadAllBytes("C:\Users\Daniel\Desktop\17952987_1337511523003217_4207780162341162631_n.jpg"))
    68. Dim html As String = GetUploadResponse("http://www.directupload.net/index.php?mode=upload", upload)
    69. TextBox1.Text = html
    70. End Sub
    71. End Class


    Live HTTP Headers:
    http://www.directupload.net/index.php?mode=upload

    POST /index.php?mode=upload HTTP/1.1
    Host: directupload.net
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: de,en-US;q=0.7,en;q=0.3
    Accept-Encoding: gzip, deflate
    Referer: directupload.net/
    Cookie: *************************************************
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    Content-Type: multipart/form-data; boundary=---------------------------176211200817433
    Content-Length: 23452
    -----------------------------176211200817433
    Content-Disposition: form-data; name="bilddatei"; filename="17992342_1289222974532628_7319340441188498046_n.jpg"
    Content-Type: image/jpeg

    ÿØÿà
    HTTP/1.1 200 OK
    Date: Sun, 23 Apr 2017 18:39:47 GMT
    Server: Apache/2.2.16 (Debian)
    X-Powered-By: PHP/5.3.3-7+squeeze14
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma: no-cache
    Vary: Accept-Encoding
    Content-Encoding: gzip
    Connection: close
    Transfer-Encoding: chunked
    Content-Type: text/html


    Was mach ich falsch?
    Liebe Grüße,
    C.O.D.E

    Testautomatisierung (TA):

    5%
    Du findest meinen Beitrag Hilfreich? :thumbup: Dann drück auf Hilfreich!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „pc-werkstatt“ ()

    Hi @pc-werkstatt!

    pc-werkstatt schrieb:

    Dieses Codebeispiel habe ich im Netz gefunden
    Könntes du uns die Quelle zeigen, woher du diesen Code herhast?

    Zu deinem Code ist mir folgendes aufgefallen:

    pc-werkstatt schrieb:

    New UploadData("files[]" [...]

    pc-werkstatt schrieb:

    Content-Disposition: form-data; name="bilddatei"; [...]
    Wie kann das zusammenpassen, wenn du beim Erstellen deines Structs den Wert files[] übergibst, in dem Live Http Header der Wert bilddatei steht?
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell

    Radinator schrieb:

    woher du diesen Code herhast?



    @Radinator ich schätze mal von hier

    Lg Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:

    pc-werkstatt schrieb:

    With New StreamWriter(PostData)
    .Write("Host: directupload.net")
    .Write("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
    .Write("Accept-Language: de,en-US;q=0.7,en;q=0.3")

    Das sind keine Post-Daten, sondern Request-Header.
    Post-Daten sind lediglich die Bilddaten.
    Header musst du (sofern es nicht sowieso explizite Request-Properties dafür gibt) auf diese Art hinzufügen:

    Visual Basic-Quellcode

    1. ​request.Headers.Add("Accept", "text/html,application/xhtml+xml")
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --