2017-01-26 9 views
0

Im Versuch, ein Bild aus der folgenden URL in Java zum Download: http://placehold.it/600/24f355Java - Download-Bild von URL

, wenn Sie die URL oben folgen Sie ein Platzhalter Bild sehen.

die URL, die offizielle das Bild hält, ist https://placeholdit.imgix.net/~text?txtsize=56&bg=24f355&txt=600%C3%97600&w=600&h=600

Hinweis: Bitte beachten Sie, dass ich nur den direkten Zugriff auf die erste URL haben. Die letzte URL kann ich nicht wissen, abgesehen von der ersten URL manuell durch einen Browser

Ich habe versucht, mehrere Möglichkeiten, um dieses Bild herunterladen, aber keine von ihnen waren erfolgreich.

Der Code, den ich im Moment haben, dass das Bild zum Download ist das folgende erwartet wird:

(Der Code lädt ein Bild, das nicht geöffnet werden kann ..)

 public void saveImage(String imageUrl, String path) { 
     // This method only saves the "dummy" image 
     try{ 
      URL url = new URL(imageUrl); 
      InputStream is = url.openStream(); 
      OutputStream os = new FileOutputStream(path); 

      byte[] b = new byte[2048]; 
      int length; 

      while ((length = is.read(b)) != -1) { 
       os.write(b, 0, length); 
      } 

      is.close(); 
      os.close(); 
     }catch(IOException e){ 
      e.printStackTrace(); 
     } 

    } 
} 

die Funktion der erhält Bild-URL, die oben erwähnt wurde und einen Pfad auf dem System angibt, auf dem das Bild gespeichert wird.

Was mache ich falsch?

Ihre Hilfe wäre toll! Vielen Dank im Voraus

+0

mögliche Antwort? http://stackoverflow.com/questions/5882005/how-to-download-image-from-any-web-page-in-java –

+0

ich glaube nicht, ich bin jetzt für einen Tag darüber gewesen. Ich denke das Problem ist, dass die URL, die ich der Funktion gebe, nicht die "offizielle" URL des Bildes ist @BenArnao – MK1000

+0

warum gibst du es dann nicht die offizielle URL? –

Antwort

0
String finalURL(String url) { 
    HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection(); 
    con.setInstanceFollowRedirects(false); 
    con.connect(); 
    return con.getHeaderField("Location").toString(); 
} 
+0

Danke, das löste mein Problem :) – MK1000

+0

@ MK1000 Dann klicken Sie auf das Häkchen, um die Antwort zu akzeptieren. – shmosel

+0

Entschuldigung! Ich habe vergessen. Ich habe jetzt akzeptiert. Vielen Dank für Ihr Feedback @shmosel – MK1000