WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 30.09.2003, 15:29   #1
Biri
Hero
 
Registriert seit: 04.09.2001
Beiträge: 894


Frage 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...
Biri ist offline   Mit Zitat antworten
Alt 30.09.2003, 18:22   #2
käptn
Inventar
 
Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150


Standard

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

~
____________________________________
LOL - Mein erstes Post im Programmier Forum

MACINTOSH - Most Applications Crash, If Not The Operating System Hangs
käptn ist offline   Mit Zitat antworten
Alt 30.09.2003, 20:44   #3
wbendl
Master
 
Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550


Standard

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
wbendl ist offline   Mit Zitat antworten
Alt 30.09.2003, 22:23   #4
Biri
Hero
 
Registriert seit: 04.09.2001
Beiträge: 894


Standard

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
Biri ist offline   Mit Zitat antworten
Alt 30.09.2003, 23:26   #5
käptn
Inventar
 
Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150


Standard

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.

~
____________________________________
LOL - Mein erstes Post im Programmier Forum

MACINTOSH - Most Applications Crash, If Not The Operating System Hangs
käptn ist offline   Mit Zitat antworten
Alt 01.10.2003, 11:53   #6
wbendl
Master
 
Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550


Standard

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
wbendl ist offline   Mit Zitat antworten
Alt 01.10.2003, 12:08   #7
Biri
Hero
 
Registriert seit: 04.09.2001
Beiträge: 894


Standard

@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.
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 ist offline   Mit Zitat antworten
Alt 01.10.2003, 19:18   #8
Biri
Hero
 
Registriert seit: 04.09.2001
Beiträge: 894


Standard 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.

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
Biri ist offline   Mit Zitat antworten
Alt 01.10.2003, 23:55   #9
wbendl
Master
 
Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550


Standard

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
wbendl ist offline   Mit Zitat antworten
Alt 03.10.2003, 09:26   #10
Biri
Hero
 
Registriert seit: 04.09.2001
Beiträge: 894


Standard

@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
Biri ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:16 Uhr.


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