[VB.Net/HTTP]File Uploaden

Pagina: 1
Acties:

  • CyberThijs
  • Registratie: Maart 2004
  • Laatst online: 11:03
Eerst en vooral beginnen met een stukje code
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
    Private Function Test(ByVal strFile As String)
        Dim oReq As HttpWebRequest
        Dim oRes As HttpWebResponse
        Dim oSW As StreamWriter
        Dim oSR As StreamReader
        Dim strText As String

        'Read image
        Dim iFileNum As Integer = FreeFile()
        FileOpen(iFileNum, strFile, OpenMode.Binary)
        strText = Space(FileLen(strFile))
        FileGet(iFileNum, strText)
        FileClose(iFileNum)

        'Fire of an http request !!!
        oReq = System.Net.WebRequest.Create("http://www.imageshack.us/hostit.php")
        oReq.Method = "POST"
        oReq.ContentType = "multipart/form-data, boundary=AaB03x"

        'Assemble the body

        Dim strBody As String = _
           "--AaB03x" & vbCrLf & _
           "Content-Disposition: attachment; name=""fileupload""; filename=""" & strFile & """" & vbCrLf & _
           "Content-Type: image" & vbCrLf & vbCrLf & _
           strText & vbCrLf & _
           "--AaB03x" & vbCrLf & _
           "Content-Disposition: form-data; name=""submit""" & vbCrLf & vbCrLf & _
           "host it!" & vbCrLf & _
           "--AaB03x--"

        Dim oStream As New FileStream("c:\test.txt", FileMode.OpenOrCreate)
        Dim oTxtWriter As New StreamWriter(oStream)
        oTxtWriter.Write(strBody)
        oTxtWriter.Close()
        oStream.Close()

        'Send it
        oSW = New StreamWriter(oReq.GetRequestStream)
        oSW.Write(strBody)
        oSW.Flush()
        oSW.Close()

        ' send info back.
        oRes = oReq.GetResponse
        oSR = New StreamReader(oRes.GetResponseStream)
        Return oSR.ReadToEnd
        oSR.Close()
        oRes.Close()
        oSW.Close()
    End Function


Mijn probleem nu: Bij het samenstellen van de body en de header gaat alles perfect, dan krijg ik de juiste output. nl.
code:
1
2
3
4
5
6
7
8
9
--AaB03x
Content-Disposition: attachment; name="fileupload"; filename="C:\Documents and Settings\Thijs.BUREAU\Mijn documenten\Mijn afbeeldingen\Call_Of_Duty_Dutch-front.jpg"
Content-Type: image

ÿØÿà JFIF  H H  ÿÛ C        

 $.' ",#(7),01444'9=82<.342ÿÛ C         

2!!222222222222222222222  etc  etc ...

Maar als ik dat doorstuur, en ik kijk mee met een packet-sniffer, krijg ik opeens een heel andere string:
code:
1
2
3
4
5
6
7
--AaB03x
Content-Disposition: attachment; name="fileupload"; filename="C:\Documents and Settings\Thijs.BUREAU\Mijn documenten\Mijn afbeeldingen\Call_Of_Duty_Dutch-front.jpg"
Content-Type: image

ÿÃ&#732;ÿà ..JFIF.....H.H..ÿÃ&#8250;.C..............
..
................. $.' etc. ect. ...


Waarom verandert die string opeens?? Ik raak er echt geen wijs meer uit :?

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Ik zie dat je in de code MIME encoding gebruikt, je zult daarom je binaire data ook als MIME moeten coderen zodat het goed overkomt.
MIME kent de zgn base64 codering om dit te doen.
Volgens mij heeft VB (.NET?) hier geen classes voor maar die zijn op Google zo te vinden

Nu met Land Rover Series 3 en Defender 90


  • CyberThijs
  • Registratie: Maart 2004
  • Laatst online: 11:03
Kan iemand me een hint geven hoe en waar ik dat dan moet implenteren?

  • pistole
  • Registratie: Juli 2000
  • Laatst online: 12-05 22:11

pistole

Frutter

ik denk dat je wel iets met System.Convert.ToBase64String() o.i.d. kan doen.
En anders ff in de System.Web classes rondsnuffelen.

Ik frut, dus ik epibreer


  • CyberThijs
  • Registratie: Maart 2004
  • Laatst online: 11:03
En waar moet ik dit ergens doen, want zowel enkel de file base-coderen, als heel de body levert niet het gewenste resultaat op..

en trouwens: de juiste output (zie m'n eerste post) bevat toch geen base64-strings :?

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Wat voor resultaat komt er bij imageshack uit? Misschien is deze post in het topic "[Alg] Welke tools heb jij gemaakt - deel II" ook wel erg interessant voor je: een tooltje om images te uploaden naar ImageShack ;)

De maker van dat tooltje kan je misschien ook verder helpen als het gaat om het ontwikkelen van een tool om images naar imageshack te uploaden.

My personal website


  • CyberThijs
  • Registratie: Maart 2004
  • Laatst online: 11:03
OZ-Gump schreef op maandag 07 februari 2005 @ 15:58:
Wat voor resultaat komt er bij imageshack uit? Misschien is deze post in het topic "[Alg] Welke tools heb jij gemaakt - deel II" ook wel erg interessant voor je: een tooltje om images te uploaden naar ImageShack ;)

De maker van dat tooltje kan je misschien ook verder helpen als het gaat om het ontwikkelen van een tool om images naar imageshack te uploaden.
Ik weet van het bestaan van deze tool, deze heeft de 'juiste' output (zoals in de startpost beschreven), maar deze is (spijtig genoeg) geschreven in delphi, waardoor ik er niet zoveel mee ben.. Ik wil namelijk het uploaden van afbeeldingen in een progje van mij implenteren.
En voor zover ik weet kan je nog steeds geen delphi-code in een .NET-applicatie verwerken..

* CyberThijs begint radeloos te worden :'(

[ Voor 5% gewijzigd door CyberThijs op 07-02-2005 22:22 ]


  • CyberThijs
  • Registratie: Maart 2004
  • Laatst online: 11:03
Oké, dit is dus het resultaat van nog een hele middag doorzoeken:

1) Ik heb geprobeerd te werken met met Base64-encoding, maar het is net alsof de server dat niet begrijpt.. Wat is er fout aan deze code:
code:
1
2
3
4
5
6
--AaB03x
Content-Disposition: form-data; name="fileupload"; filename="C:\Documents and Settings\Thijs.BUREAU\Mijn documenten\HW-Wi.gif"
Content-Type:
Content-Transfer-Encoding: base64

RwBJAEYAOAA5AGEA/AADABYAAgD3AAAAAADbAP8A+QD/AOsA9AD9AP0A/QD/APUA/wDjAP8A/QD/AP8A+wD ETC ETC..
Als ik een image hiermee upload, dan decodeert de server dat niet. Wanneer ik de afbeelding dan weer download, is ie nog altijd base64-encoded..
Ik heb de header "Content-Transfer-Encoding: base64" rechtstreeks gekopieërd uit de source van een e-mail met attachement (dat werkt ook met base64-encoding), en alles zoveel mogelijk gelijkgetrokken... maar toch het werkt niet :(

2) De hele request base64-encoden werkt ook niet (maar dat was wss te verwachten)

Dus, toch weer zonder base64-encoding werken? Dan kom ik weer bij m'n oorspronkelijke vraag: waarom wordt er iets anders doorgestuurd naar de server dan wat ik laat doorsturen door m'n app???
Pagina: 1