HTTP Dateien an PHP-Skript senden

Weltall 7

Mitglied
Hallo,
wie im Titel bereits erwähnt, möchte ich Dateien aus einem Applet an ein PHP-Skript senden, am besten noch mit ein paar Zeilen Text zur Beschreibung der Dateien. Das PHP-Skript ist auf dem gleichen Server wie das Applet. Da ich die Dateien nicht speichern will, brauche ich kein FTP und habe eher an HTTP POST / multipart/form-data gedacht.
Ich habe schon im Internet (inkl. diesem Forum) herumgestöbert und bin auf HttpClient von Apache und HttpUnit gestossen. Kann mir jemand eines von beiden empfehlen oder irgendwas anderes vorschlagen?
 
Das stimmt schon... im Grunde machst du einfach einen POSt Request auf die Url der PHP Datei.
Der HttpClient von Apache Commons ist da eine gute Hilfe.
 
Ich bekomme eine
Code:
ClassNotFoundException
Java:
java.lang.ClassNotFoundException: org.apache.http.entity.mime.content.ContentBody
weil java versucht, die Klasse übers Internet herunterzuladen. Ausserdem ist meine jar-Datei jetzt auch 1.7MB gross, weil ich alle jars von Apache (also eig. auch die mit dem ContentBody.class drin) zum jar-Export auswähle. Gibt es in eclipse eine Funktion, nur diejenigen .class-Dateien in das jar zu packen, welche mein Programm auch wirklich braucht? Dann wäre meine jar kleiner und die ContentBody.class sollte dann sicher dabei sein.
 
Zuletzt bearbeitet:
ClassNotFound heißt dass die Klasse nicht im ClassPath ist. Da wird auch nichts versuchst ausm internet runterzuladen.
Hast du die HttpMime jar sicher in deinem classpath?
 
Die jar wurde von eclipse erstellt, und die HttpMime jar ist drin. allerdings findet Java jetzt nicht mal mehr meine eigene Klasse :bahnhof:, wahrscheinlich weil Java trotzt deaktiviertem Java Cache die jar nur teilweise herunterlädt, und bei gleichzeitig deaktiviertem Browser-Cache mitten im Laden aufhört ???:L
Wahrscheinlich liegt es am Hoster, da es ein Gratis-Hoster ist, allerdings hat bis jetzt alles gut funktioniert.
 
jetzt funktioniert mein Applet, allerdings meldet mein php-Skript jetzt, dass
Code:
$_FILES['name']['tmp_name']
leer ist. Ich benutze den namen, den ich bei
Code:
MultipartEntity.addPart(String, ContentBody)
angegeben habe, und nicht den Dateinamen, welchen ich bei
Code:
InputStreamBody(InputStream, String)
benutze, das sollte schon richtig sein, oder?
 
Zuletzt bearbeitet:
Das Applet funktioniert wieder nicht, ich glaube, ich versuche es mal mit HttpUnit, da sich ja niemand mit HttpClient auszukennen scheint.
 
Versuche mal mit php folgendes auszugeben:

Code:
<?php
print_r($_FILES);
?>

das listet alle Files auf, die per http-post übertragen wurden!
 
Das werde ich tun, wenn mein Applet wieder funktioniert.
In der Zwischenzeit habe ich im Internet noch eine Lösung zum File-Upload mit HttpClient/Component 4 gefunden, welcher nicht funktioniert, weil InputStreamBody als Länge immer -1 zurückgibt. Man macht einfach seine eigene Klasse und überschreibt die
Code:
getContentLength()
-Methode.
Quelle: File upload with HttpComponents Client 4.0 (successor of Commons HttpClient 3.x)
 
Das Problem mit der
Code:
ClassNotFoundException
habe ich gelöst, indem ich einfach alle jars entpackt habe. Ich probiere jetzt den Upload aus und melde mich nochmal.
 

Neue Themen


Zurück
Oben