WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   php upload automatisieren (http://www.wcm.at/forum/showthread.php?t=110578)

Biri 30.09.2003 15:29

php upload automatisieren
 
hi !

eine kurze beschreibung meines "problemes":

um eine datei auf einen (web-)server upzuloaden verwende ich folgendes php-script:

dateiauswahl.php:
...
<input type ="file" name ="datei">
// usw.
...

beim submit wird das script "upload.php" aufgerufen.
Dieses greift via $FILES["datei"]["tmp_name"] auf die upgeloadedte Datei zu und kopiert sie in ein anderes Verzeichnis am Server.
Danach wird die Datei gelesen und verarbeitet.
Soweit, sogut + funktioniert auch alles.

Nun will ich jedoch den Upload automatisieren.

Dazu wird "dateiauswahl.php" im IExplorer Control angezeigt (wie bisher) in einem VB-Programm.
Die Schritte:
- auf "Browse"-Button klicken
- Datei auswählen
- "Submit" klicken

sollten nun jedoch automatisch ablaufen. (Name + Pfad der zu bereitstellenden Datei ist natürlich bekannt)

Ich hab bisher nur Lösungen gefunden, die solch einen Upload via ftp durchführen -
ich würde es jedoch gernen auf die genannte weise durchführen.

Wie würded ihr dieses Problem lösen ?

fg
-hannes

ps: via "sendkeys" in VB halte ich nicht grad für eine "schöne" lösung...

käptn 30.09.2003 18:22

PHP-Code:

$fh fopen($datei'rb');
$data 'file=' rawurlencode(fread($fh));
fclose($fh);
$fh fsockopen('www.example.com'80);
$header =
"POST /path/to/script.php HTTP/1.1\n" .
"Host: [url]www.example.com\n[/url]" .
"Content-Type: application/x-www-form-urlencoded\n" .
"Content-Length: " strlen($data) . "\n" .
"Connection: close\n\n";
fwrite($fh$header.$data);
fclose($fh); 

Musst jetzt nur mehr umschreiben in VB :D

~

wbendl 30.09.2003 20:44

Hi!

Hilf meinem alten Hirn auf die Sprünge. Mir ist nicht ganz klar was mit PHP, und was mit VB erledigt werden soll.

Für den Teil, der VB betrifft, kann ich dir vielleicht helfen.

mfg

WB

Biri 30.09.2003 22:23

hi !

@käptn: danke !
das umschreiben auf vb, sollt ich hinbekommen.
nur so interessehalber: macht der browser das, wenn ich ein file via http uploade - versteckt - auch so ?

@wbendl:
php:
das script zur auswahl der datei (dateiauswahl.php) und das script, welches diese upgeloadete datei dann verarbeitet. (upload.php)

vb:
programm, das auf einem client läuft - dieses hat in einem form das Internet Explorer Control - verbindet sich zum webserver und gibt als url die adresse von "dateiauswahl.php" an.
Im VB-Programm wird daher eine Internetseite angezeigt, wie wenns im browser wäre. Dort wählt man eine Datei zum uploaden aus.
Nachdem das "upload.php" diese verarbeit hat, schickt es xml an das Browser Control zurück.
...hoffe, das war verständlich

fg
-hannes

käptn 30.09.2003 23:26

Net ganz,

so wie oben geschrieben findest du den Dateiinhalt am Server dann in $_POST['file']. Bei 'nem <input type="file"> isses ja normalerweise in $_FILES[] zu finden.

Zu beachten ist dabei vielleicht noch, dass es eine php.ini Direktive namens post_max_size gibt, die AFAIR im Normalfall auf 2MB steht.

~

wbendl 01.10.2003 11:53

Hi!

Mal sehen, ob ich's richtig verstanden habe.

Du hast das Programm eigentlich schon fertig, und es funktioniert auch.

Du willst dir den Klick auf "Browse" und "Submit" ersparen, indem er vom VB-Programm automatisch ausgeführt wird.

Das Ganze soll ohne "SendKeys" realisiert werden.

Sag mir ob ich richtig liege, und wenn ja, was dich an "SendKeys" stört.

mfg

WB

Biri 01.10.2003 12:08

@käptn: aha - na das ist ja eh nur eine kleinigkeit zu ändern - und 2 mb für max. uploadvolumen sind in diesem fall bei weitem ausreichend.

@wbendl: ja, genau so hab ich das gemeint. :cool:
hmm - an sendkeys stört mich, dass man dann doch das formular anzeigen muss (ok - ev. versteckt)
und es ja eigentlich eine simulation von benutzereingaben ist - ich finde einfach, dass sowas eine "notlösung", aber sicher keine professionelle lösung ist.

werde heute versuchen, den teil in vb zu programmieren - fall's funktioniert, poste ich das ergebnis natürlich. :)

fg
-hannes

Biri 01.10.2003 19:18

problem gelöst
 
hi !

so - inzwischen hab ich das ganze gelöst und es funktioniert sogar. ;)
muss aber zugeben, dass ich dabei bissl "geschummelt" hab - hab nämlich beim suchen der hilfe zum vb socket control folgendes gefunden:

http://www.internext.co.za/stefan/genericpost/

Diesen http-poster kann man natürlich in VB inkludieren und der macht dann die ganze arbeit. :cool:

Der verbleibende VB-Code:

Private Sub Auto_Upload_Click()
On Error GoTo err_post

Dim data As String, nextline As String
Dim filenum As Integer
Dim poster As INXHTTPPost.poster
Dim e As Variant

Set poster = New INXHTTPPost.poster
filenum = FreeFile

' zu sendenede Daten auslesen
' hier pfad der .xml Datei angeben !
Open "C:\testfile.xml" For Input As filenum
Do Until EOF(1)
Line Input #filenum, nextline
data = data + nextline + Chr(13) + Chr(10)
Loop
Close filenum

poster.AddParam "fileNname", "12345_20031001.xml"
poster.AddParam "uploadData", data
e = poster.Post("http://localhost/webappl/upload.php", 0)

If Len(e) > 0 Then
Debug.Print "An error occured"
Else
' Hier bekommt man das .xml - Ergebnis vom php-Script zurück
Debug.Print "The Post was successful - Response: " + poster.LastResponse
End If

Exit Sub

err_post:
MsgBox Error
End Sub

in php ist das ganze dann in $POST["uploadData"] zugreifbar.

fg
-hannes

wbendl 01.10.2003 23:55

Hi!

Da bin ich jetzt wohl zu spät.

Ich wollte auf das "Microsoft Internet Transfer Control" hinweisen.
Das hat die Methode "Post", und erledigt diese Aufgabe.

Weil du ein Control für einen Web-Browser verwendet hast, hab ich am Anfang nicht begriffen, daß du nichts am Bildschirm anzeigen willst.

Aber das hat sich ja jetzt erledigt.

mfg

WB

Biri 03.10.2003 09:26

@wbendl: wo findet man denn das internet transfer control ? (ev. bau ich das ganze ja noch um)

Ist das standardmäßig mit VB mitinstalliert bzw. was muss ich bei den Components/References auswählen, damit ich dieses verwenden kann ?

thx
- hannes


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag