# Bilder mit HttpClient hochladen



## herakles (4. Aug 2009)

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:

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


```
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 (5. Aug 2009)

herakles hat gesagt.:


> Hallo
> Folgende Methoden habe ich schon ausprobiert:
> 
> ```
> ...


File#getPath, nicht File#getName, siehe javadoc.



herakles hat gesagt.:


> ```
> public void uploadFile2(String datei, String host) {
> HttpClient client = new HttpClient();
> MultipartPostMethod mPost = new MultipartPostMethod(host);
> ...


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 (6. Aug 2009)

HoaX hat gesagt.:


> 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 



HoaX hat gesagt.:


> 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 (6. Aug 2009)

herakles hat gesagt.:


> 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?


herakles hat gesagt.:


> 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:
	
	
	
	





```
URL url = getClass().getResource(datei);
System.out.println("URL zur Datei ist: " + url);
```


----------

