Bilder mit HttpClient hochladen

Status
Nicht offen für weitere Antworten.

herakles

Neues Mitglied
Hallo
arbeite momentan an einer kleinem Javaprogramm. Es soll hauptsächlich Bilder verkleinern und dann bei einem Imagehoster hochladen.
Ich habe mir dazu erst einmal ein paar Beispiele im Internet angeschaut und nochmal einiges über HttpClient nachgelesen. Andere Aufgaben, wie z.B. Downloads habe ich auch schon damit umgesetzt.
Momentan komme ich jedoch trotz intensiver Suche nicht auf eine Lösung

Folgende Methoden habe ich schon ausprobiert:
Java:
public void uploadFile(String datei, String host) {
        File targetFile = new File(datei);
        PostMethod filePost = new PostMethod(host);
        filePost.getParams().setBooleanParameter(HttpMethodParams.USE_EXPECT_CONTINUE,true);
        try {
        Part[] parts = { new FilePart(targetFile.getName(), targetFile) };
        filePost.setRequestEntity( new MultipartRequestEntity(parts, filePost.getParams()) );
        HttpClient client = new HttpClient();
        client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
        int status = client.executeMethod(filePost);
        } catch (Exception ex) {
          ex.printStackTrace();
        } finally {
          filePost.releaseConnection();
        }
    }
Fehler: java.io.FileNotFoundException: File is not a normal file.

Java:
public void uploadFile2(String datei, String host) {
        HttpClient client = new HttpClient();
        MultipartPostMethod mPost = new MultipartPostMethod(host);
        File upload = new File(getClass().getResource(datei).getFile());
        try {                     
            mPost.addParameter("userfile1", upload);                        
            mPost.addParameter("upload", "Upload");                              
            int statusCode1 = client.executeMethod(mPost);            
            System.out.println(mPost.getStatusLine());            
            System.out.println(mPost.getResponseBodyAsString() );
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
        mPost.releaseConnection();
        }
    }
Fehler: Exception in thread "main" java.lang.NullPointerException
Die Datei ist im übergebenen Verzeichnis vorhanden.

Mit beiden Fehlern lässt sich vermutlich noch mehr arbeiten. Ich suche allerdings eher ein Konzept. Kein einziger Code oder Versuch hat bis jetzt gefruchtet.

Das Formular selbst ist mit einem HTML-Formular ausgestattet und müsste eigentlich nur das Bild und den submit brauchen.

Ich hoffe jemand kennt sich damit aus ???:L
 

HoaX

Top Contributor
Hallo
Folgende Methoden habe ich schon ausprobiert:
Java:
public void uploadFile(String datei, String host) {
        File targetFile = new File(datei);
        PostMethod filePost = new PostMethod(host);
        filePost.getParams().setBooleanParameter(HttpMethodParams.USE_EXPECT_CONTINUE,true);
        try {
        Part[] parts = { new FilePart(targetFile.getName(), targetFile) };
        filePost.setRequestEntity( new MultipartRequestEntity(parts, filePost.getParams()) );
        HttpClient client = new HttpClient();
        client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
        int status = client.executeMethod(filePost);
        } catch (Exception ex) {
          ex.printStackTrace();
        } finally {
          filePost.releaseConnection();
        }
    }
Fehler: java.io.FileNotFoundException: File is not a normal file.
File#getPath, nicht File#getName, siehe javadoc.

Java:
public void uploadFile2(String datei, String host) {
        HttpClient client = new HttpClient();
        MultipartPostMethod mPost = new MultipartPostMethod(host);
        File upload = new File(getClass().getResource(datei).getFile());
        try {                     
            mPost.addParameter("userfile1", upload);                        
            mPost.addParameter("upload", "Upload");                              
            int statusCode1 = client.executeMethod(mPost);            
            System.out.println(mPost.getStatusLine());            
            System.out.println(mPost.getResponseBodyAsString() );
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
        mPost.releaseConnection();
        }
    }
Fehler: Exception in thread "main" java.lang.NullPointerException
Die Datei ist im übergebenen Verzeichnis vorhanden.
Wenn eine Exception fliegt dann wäre es hilfreich zu verraten in welcher Zeile.
Ich denk aber es passiert dort wo du getResource(file) aufrufst, weil es die Datei nicht dort suchst wo du denkst dass es sucht.
 

herakles

Neues Mitglied
File#getPath, nicht File#getName, siehe javadoc.
Danke für den Hinweis. Die Methode läuft jetzt ohne Fehler durch.
Allerdings wird als Ausgabe immer gebracht, dass der Dateityp falsch ist. Bin langsam am verzweifeln :(

Wenn eine Exception fliegt dann wäre es hilfreich zu verraten in welcher Zeile.
Ich denk aber es passiert dort wo du getResource(file) aufrufst, weil es die Datei nicht dort suchst wo du denkst dass es sucht.
War genau die Stelle und die lässt sich auch nicht durch irgendeinen Versuch umgehen. Ich habe schon alles mögliche versucht und Java findet die Datei auch.
Sie liegt in einem Unterverzeichnis und sollte eigentlich problemlos abrufbar sein.
 

HoaX

Top Contributor
Danke für den Hinweis. Die Methode läuft jetzt ohne Fehler durch.
Allerdings wird als Ausgabe immer gebracht, dass der Dateityp falsch ist. Bin langsam am verzweifeln :(
Ausgabe von was?
War genau die Stelle und die lässt sich auch nicht durch irgendeinen Versuch umgehen. Ich habe schon alles mögliche versucht und Java findet die Datei auch.
Sie liegt in einem Unterverzeichnis und sollte eigentlich problemlos abrufbar sein.
Wieso willst du die Zeile umgehen?
Woher weißt du dass Java die Datei findet?
"Sollte" gibts beim Programmieren net, entweder es geht, oder es geht net.

Probier doch einfach mal:
Code:
URL url = getClass().getResource(datei);
System.out.println("URL zur Datei ist: " + url);
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Bilder übergeben Netzwerkprogrammierung 16
S Socket Bilder über Socket Senden Netzwerkprogrammierung 0
B Socket Bilder verschicken via Sockets. Heap-Problem. Netzwerkprogrammierung 2
B SocketChannel ByteBuffer Bilder verschicken Netzwerkprogrammierung 17
M Socket Bilder senden Netzwerkprogrammierung 1
S Bilder durch's Netzwerk usw ... Netzwerkprogrammierung 10
R Webservice und Bilder Netzwerkprogrammierung 29
TheJavaKid Bilder mit nem ObjectStream übertragen Netzwerkprogrammierung 8
F Bilder aus Internet downloaden Netzwerkprogrammierung 12
S Socket Bilder übertragen Netzwerkprogrammierung 7
M Socket Bilder über das Netzwerk übertragen Netzwerkprogrammierung 4
G Frage zu Servlets und deren Objekte + Bilder in Servlets anzeigen? Netzwerkprogrammierung 11
Benji0815 Bilder oder PDF downloaden Netzwerkprogrammierung 11
A html - E-mail - Bilder Netzwerkprogrammierung 4
A [URLConnection] Bilder hochladen - aber anders! Netzwerkprogrammierung 4
Lazybone Bilder über Socket Netzwerkprogrammierung 4
P Bilder: FTP-Upload funktioniert nicht richtig Netzwerkprogrammierung 2
D HTTP Apache-HttpClient/UNAVAILABLE (java 1.4) Netzwerkprogrammierung 18
B HttpClient - Server (Jetty) - getInputStream - EOF Netzwerkprogrammierung 3
G apache httpClient Problem. Netzwerkprogrammierung 5
B HttpClient Netzwerkprogrammierung 2
M Apache HTTPClient Server log ausgeben ?! Netzwerkprogrammierung 3
N HTTP Apache 4.2.1 HttpClient 302 nach Login und auf den weiteren Seiten. Netzwerkprogrammierung 5
R Apache HttpClient File Download? Netzwerkprogrammierung 3
M HTTP HTTPClient Authentication - Quickr Server Netzwerkprogrammierung 8
H Java 1.4 HTTPClient Content von PutMethod Netzwerkprogrammierung 4
M need org.apache.commons.httpclient.* Netzwerkprogrammierung 8
K Login via apache httpclient Netzwerkprogrammierung 4
P HttpClient - Daten einer Website "unvollständig" Netzwerkprogrammierung 5
M Dateiupload mittels HttpClient Netzwerkprogrammierung 3
F FileUpload mit commons HttpClient Netzwerkprogrammierung 17
T HTTP Apache Commons HttpClient Bibliothek Netzwerkprogrammierung 2
H HTTP Login mit POSTMethod und httpClient Netzwerkprogrammierung 5
lordcarlos HTTP Apache HttpClient, post und login. Netzwerkprogrammierung 2
B HTTP Probleme mit HttpClient? Netzwerkprogrammierung 2
T Apache HttpClient & Default Headers Netzwerkprogrammierung 9
T apache HTTPClient einloggen Netzwerkprogrammierung 2
T HttpClient - Senden via Post Netzwerkprogrammierung 12
M httpclient kann sich nicht auf asp.net Seite anmelden Netzwerkprogrammierung 2
Q HTTPS mit Apache HttpClient Netzwerkprogrammierung 4
M Seltsame Fehlermeldung (httpclient) Netzwerkprogrammierung 6
A Jakarta Commons HTTPClient: Mehrere Requests gleichzeitig Netzwerkprogrammierung 2
E HttpClient und return Problem Netzwerkprogrammierung 6
K Bad Request nach Form Login in Jakarta HttpClient Netzwerkprogrammierung 4
J Jakarta HTTPClient Netzwerkprogrammierung 5
D Problem beim holen einer PHP-Seite via HttpClient Netzwerkprogrammierung 19
C HTTPS mit Apache HTTPClient Netzwerkprogrammierung 1
M org.apache.commons.httpclient.HttpClient Netzwerkprogrammierung 3
S mit HttpClient Seiteninhalt lesen Netzwerkprogrammierung 8
P jakarta.HttpClient: Port bei GetMethod angeben Netzwerkprogrammierung 3
H Datei mit Anhang via http "hochladen" Netzwerkprogrammierung 16
D Datei hochladen zu PHP Server Netzwerkprogrammierung 8
T Glassfish Server hochladen Netzwerkprogrammierung 4
Dit_ FTP, Datei Hochladen Netzwerkprogrammierung 4
B Via Java Datei zu PHP-Script auf Apache hochladen Netzwerkprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben