@Thomas: Schon mal Danke für den Vorschlag.
Problem ist aber, dass das Projekt komplett in php gecodet ist und ich nur wegen der Uploadfunktion keine Servletengine auf den Server installieren will.
Außerdem hatte ich vor, dass die Benutzer die Bilder die sie hochladen wollen gleich auch schon drehen und zuschneiden können (über Java2D).
Also wäre die Sache mit dem Applet am schönsten. Bei Benutzern die keine JRE haben erscheint dann einfach ein normaler Http-Upload mit eingeschränkten Funktionen.
Also wie kann ich den Uploadstatus z.B. über DataOutputStream messen?
Ich hab es eigentlich schon fast hinbekommen. Ich baue über "HttpConnection eine Verbindung zum Server auf und lasse mir per "getRequestOutputStream()" den OutputStream geben über den ich dann den Request schreiben kann.
Nun ist aber das Problem, dass ich keinen vernünftigen Http-POST-Header bekommen, weil die PostMethod-Klasse im Jakarta Http-Client keine öffentliche Methode zum schreiben in einen Stream hat. Da gibts nur protected Methoden zum direkten schreiben in eine HttpConnection, aber da kann ich den OutputStream nicht kontrollieren.
Seltsamer Weise hat die Klasse "MultipartRequestEntity" aber eine Methode "void writeRequest(OutputStream out)" mit der man die Entities in den OutputStream schreiben kann, aber dann fehlt ja noch der korrekte POST-Header. In den Beispielen bei Jakarta werden die RequestEntities immer an PostMethod übergeben, aber da ist dann wieder das Problem mit dem OutputStream...
Hat jemand eine Idee Kann doch nicht so schwer sein.
Hier mal mein bisheriger Code:
Code:
/* ..... */
String urlString = "http://localhost/httpclienttest/fileupload.php";
HttpHost host;
HostConfiguration hostConfiguration;
HttpConnection httpConnection;
OutputStream os;
DataOutputStream dos;
httpConnection = new HttpConnection("localhost", 80);
httpConnection.setHttpConnectionManager( new SimpleHttpConnectionManager() );
httpConnection.open();
System.out.println("host: "+ httpConnection.getHost() );
os = httpConnection.getRequestOutputStream();
dos = new DataOutputStream(os);
PostMethod postMethod = new PostMethod(urlString);
Part[] parts = {
new FilePart(file.getName(), file),
new StringPart("keytest", "23459789")
};
MultipartRequestEntity mre = new MultipartRequestEntity( parts, postMethod.getParams() );
mre.writeRequest(dos); //writes to the OutputStream
httpConnection.flushRequestOutputStream();
dos.flush();
dos.close();
httpConnection.close();
/* ..... */