Seite 1 von 1

Upload auf Server ohne FTP

Verfasst: 18.11.2005 02:34
von Delle
Hallo,

besteht eine Möglichkeit einen typischen Browser-File-Upload zu simulieren?

Sprich man wählt mit PB eine lokale Datei aus, die dann auf den
Server übertragen werden soll. Auf dem Server wartet das
gleiche PHP-Script, was normalerweise auch für File-Uploads
benutzt wird (und eben $_FILES['datei'] ausliest).

Also alles OHNE FTP!

Code: Alles auswählen

InitNetwork() 

ConnectionID = OpenNetworkConnection("www.domain.de", 80)

buf$=buf$+"POST /upload.php HTTP/1.0"+Chr(13)+Chr(10)
buf$=buf$+"Host: www.domain.de"+Chr(13)+Chr(10)
buf$=buf$+"Content-type: multipart/form-data"+Chr(13)+Chr(10)
buf$=buf$+"Content-length: 12345"+Chr(13)+Chr(10)
buf$=buf$+"datei: 12345"+Chr(13)+Chr(10)
buf$=buf$+Chr(13)+Chr(10)+Chr(13)+Chr(10)

SendNetworkData(ConnectionID, buf$, Len(buf$))

CloseNetworkConnection(ConnectionID)
Was ist daran falsch? Dateiauswahl etc. hab ich jetzt mal weggelassen...

Oder sollte man vielleicht die Datei einfach komplett binär
an ein normales PHP-Script senden was lediglich diese
Datei in eine Variable abspeichert und fertig?

Verfasst: 18.11.2005 03:00
von MVXA
ich kann mich natürlich irren aber müsste hier:
buf$=buf$+Chr(13)+Chr(10)+Chr(13)+Chr(10)
nicht nur ein Chr(13)+Chr(10) sein? Du hast ja schon in der
Zeile darüber ein CrLF. Das müssen aber nur 2 statt 3 am
Ende sein.

Übrigens kennt PB eine Konstante namens #CRLF$, die auch
Chr(13)+Chr(10) enthält.

Verfasst: 18.11.2005 04:32
von Laurin
Du rufst doch eine PHP-Datei auf. AFAIK werden die doch nur vom Server ausgeführt, wenn man sie per UrlDownloadToFile_() "runterladet".

Ich kann mcih aber auch irren. Aber so kenne ich das.

Verfasst: 18.11.2005 05:12
von MVXA
Du irrst dich /:->. UrlDownloadToFile_() schickt im Grunde das
Selbe wie der Code von Delle.

Verfasst: 18.11.2005 07:09
von DarkDragon
Content-length: 12345 Stimmt auf jeden fall schon nicht.

Probiers mal so:

Code: Alles auswählen

InitNetwork()

ConnectionID = OpenNetworkConnection("www.domain.de", 80)

Content.s = "datei: 12345"
buf$=buf$+"POST /upload.php HTTP/1.0"+Chr(13)+Chr(10)
buf$=buf$+"Host: www.domain.de"+Chr(13)+Chr(10)
buf$=buf$+"Content-type: multipart/form-data"+Chr(13)+Chr(10)
buf$=buf$+"Content-length: "+Str(Len(Content))+Chr(13)+Chr(10)
buf$=buf$+Content+Chr(13)+Chr(10)
buf$=buf$+Chr(13)+Chr(10)

SendNetworkData(ConnectionID, buf$, Len(buf$))

CloseNetworkConnection(ConnectionID)

Verfasst: 28.07.2009 22:17
von saimen
Wo steht da jetzt die File die ich uploaden will? z.b. c:\test.txt?

bei mir funktioniert das leider nicht.
Die File soll in meinem fall an eine cgi geschickt werden die dann den Upload ausführt.

Verfasst: 29.07.2009 18:07
von ZeHa
Ich rate jetzt einfach mal und sage, die mußt Du selbst einlesen (in einen Buffer) und diese dann in die Variable Content.s speichern. Allerdings weiß ich nicht, ob dazu eine besondere Kodierung benötigt wird (im Falle von Binärdaten).