Jpg-Datei einlesen und via WebRequest an Server schicken

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von ThomasProj.

    Jpg-Datei einlesen und via WebRequest an Server schicken

    Hallo liebe Community,

    dies ist mein erster Beitrag hier. Ist auch mein erster Tag mit Visual Basic. Und da habe ich gleich eine kleine Frage:

    Ich möchte eine Grafik im JPG-Format aus dem lokalen Dateisystem einlesen und an einen externen Webserver schicken. Der Request an den Webserver funktioniert. Nur leider bekomme ich nicht die Grafik in die Bytes zerlegt.

    Bisher wollte ich mit ReadAllBytes alle Bytes einlesen lassen und das Array aus den Bytes dann via For-Schleife in einen String zusammenführen. Das ganze danach an den Post-Request hängen. Aber folgendes funktioniert leider nicht wie gewünscht:

    VB.NET-Quellcode

    1. Dim inputFile = IO.File.ReadAllBytes(ffpath)
    2. MessageBox.Show(inputFile.ToString)
    3. For i = 0 To UBound(inputFile) - 1
    4. imageBytesAsString= imageBytesAsString& inputFile(i)
    5. Next i
    6. MessageBox.Show(imageByteAsString)


    Nun behinhaltet imageByteAsString leider nicht einen String mit dem Inhalt der Grafik. Sie ist leider leer. ffpath beinhaltet eine absolute Dateiangabe (C:\datei.jpg). Ausführbar ist es. Und Fehlermeldungen erhalte ich auch keine.
    Hallo Andreas,

    vielen Dank für deine Antwort. Leider ist dies nicht möglich, da ich die Bildinformationen zusammen mit weiteren Daten in einem (POST-)Request an den Server schicken muss.

    Habe selber noch etwas am Code gebastelt und nun folgendes:

    VB.NET-Quellcode

    1. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    2. PictureBox2.Image = System.Drawing.Bitmap.FromFile(ffpath)
    3. MessageBox.Show("Test" & ByteArrayToString(Image2ByteArray(PictureBox2.Image, Imaging.ImageFormat.Jpeg)))
    4. End Sub
    5. Public Function Image2ByteArray(ByVal Bild As Image, ByVal Bildformat As System.Drawing.Imaging.ImageFormat) As Byte()
    6. Dim MS As New IO.MemoryStream
    7. Bild.Save(MS, Bildformat)
    8. MS.Flush()
    9. Return MS.ToArray
    10. End Function
    11. Public Function ByteArrayToString(ByRef Barr() As Byte) As String
    12. Return Convert.ToBase64String(Barr)
    13. End Function


    ffpath enthält weiterhin die absolute Angabe, wo das Bild liegt. Leider ist aber die Rückgabe von ByteArrayToString leer. Was mache ich da falsch?
    Hallo ThomasProj,

    habe den Strict-Mode aktivert.

    Es scheitert daran, dass ich das Bild nicht in einen String packen kann.

    VB.NET-Quellcode

    1. Dim inputFile = IO.File.ReadAllBytes(ffpath)
    2. MessageBox.Show("" & Convert.ToBase64String(inputFile) & "")
    3. For i = 0 To UBound(inputFile) - 1
    4. imageBytesString = imageBytesString & inputFile(i)
    5. Next i
    6. MessageBox.Show(imageBytesString)


    Liefert nicht irgendeinen String, sondern einen leeren String. Die Übertragung an den Server funktioniert.
    Wieso willst du das Bild in einen String packen?

    Mach es mit einem Memorystream, und dessen Funktion "WriteTo".
    Das schreibe ich immer in den Requeststream.
    Kenne natürlich deine Seite nicht, so ist es bei Bilderhoster.
    Ist es evtl. ein Base64 String?