Ich versuche, Bilder herunterzuladen, die auf Amazon Web Services gehostet werden. Meine Methoden funktionieren gut auf jedem anderen Host, aber das Herunterladen eines Bildes aus dieser URL zum Beispiel http://s3-eu-west-1.amazonaws.com/static.melkweg.nl/uploads/images/scaled/event_header/18226
gibt mir Ärger. Es wird heruntergeladen, aber die Datei ist nur 49kb groß und kann nicht geöffnet werden.Das Herunterladen von Bildern von AWS gibt mir beschädigte Dateien
Ich habe verschiedene Methoden wie Apache FileUtils copyURLToFile, BufferedInputStream, ImageIO, usw. versucht Einige werfen Fehler, die meisten nur eine beschädigte Datei herunterladen.
Hier sind die Methoden, die ich versucht habe:
public static void downloadApache(String imageurl, String target)
{
try
{
File file = new File(target);
URL url = new URL(imageurl);
FileUtils.copyURLToFile(url, file);
}
catch(Exception e)
{
System.err.println("[3]Something went wrong.");
}
}
public static void downloadImage(String imageurl, String name)
{
try
{
URL url = new URL(imageurl);
InputStream in = new BufferedInputStream(url.openStream());
OutputStream out = new BufferedOutputStream(new FileOutputStream(name));
for (int i; (i = in.read()) != -1;) {
out.write(i);
}
in.close();
out.close();
}
catch(Exception e)
{
e.printStackTrace();
System.err.println("[0]Something went wrong.");
}
}
public static void downloadImageIO(String imageurl, String target)
{
try
{
URL url = new URL(imageurl);
BufferedImage image = ImageIO.read(url);
ImageIO.write(image, "jpg", new File(target));
}
catch(Exception e)
{
e.printStackTrace();
System.err.println("[1]Something went wrong.");
}
}
public static void downloadImageCopy(String imageurl, String target)
{
try
{
try (InputStream in = new URL(imageurl).openStream()) {
Files.copy(in, Paths.get(target), StandardCopyOption.REPLACE_EXISTING);
}
}
catch(Exception e)
{
e.printStackTrace();
System.err.println("[2]Something went wrong.");
}
}
Und hier ist die wichtigste Methode, wenn das von Interesse ist
public static void main(String[] args)
{
String imageurl = "http://s3-eu-west-1.amazonaws.com/static.melkweg.nl/uploads/images/scaled/event_header/18226";
String name = "downloaded_image.jpg";
String target = "C:/Users/Robotic/Downloads/" + name;
Download.downloadImage(imageurl, name);
Download.downloadImageCopy(imageurl, target);
Download.downloadImageIO(imageurl, target);
Download.downloadApache(imageurl, target);
}
Vielen Dank im Voraus.
sind Sie sich bewusst, dass das Bild auf der URL, die Sie auch 49KB im Browser vorgesehen ist? Ich kann das Bild gut sehen und bekomme 'Content-Length: 49626' mit deaktiviertem Caching – Gelunox