2016-11-11 78 views
0

我想从网站下载图片 - 直接链接到图片。 它是某种保护,当我尝试:JAVA图片下载保护 - 无法下载

InputStream in = new URL("http://www.somesite.sk/somepicture.jpg") 
Files.copy(in, Paths.get("C:/picture.jpg")); 

它下载,但不能作为原始图片,文件“picture.jpg”只有这个文本中:

<head><title>Document Moved</title></head> 
<body><h1>Object Moved</h1>This document may be found <a HREF="http://www.somesite.sk/somepicture.jpg">here</a></body> 

当我尝试直接下载 - 右键点击和保存图片,它的工作原理,如果我尝试一些下载管理器,它的工作原理。 有些想法?

+1

我不会介意的实际链接到图像尝试一些东西出来,为了回答你的问题。有可能有一个? 我的第一个猜测是用户代理问题。 – MadWard

+1

使用另一个httpClient并确保启用后面的重定向。请参阅此处获取示例 - http://www.baeldung.com/httpclient-stop-follow-redirect –

+0

MadWard:http://www.temponabytok.sk/Files/obrazky/10010483.jpg – nilrem

回答

0

刚刚测试过它。将这些依赖关系放入您的pom.xml文件中。

<dependency> 
     <groupId>commons-io</groupId> 
     <artifactId>commons-io</artifactId> 
     <version>2.5</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.httpcomponents</groupId> 
     <artifactId>httpclient</artifactId> 
     <version>4.3.2</version> 
    </dependency> 

import org.apache.commons.io.FileUtils; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.HttpClientBuilder; 
import java.io.File; 

public class ImageDownloader { 
    public static void main(String[] args) {  
     HttpClient instance = HttpClientBuilder.create().build(); 
     HttpGet httpGet = new HttpGet("https://yourhost.blah/yuorfile.jpg"); 
     try { 
      HttpResponse response = instance.execute(httpGet); 
      FileUtils.copyInputStreamToFile(response.getEntity().getContent(), new File("output.jpg"));  
     } catch (Exception e) { 
      e.printStackTrace(); 
     }  
    } 
} 

希望它有助于

+0

如果你能帮我多一点:我在哪里可以找到pom.xml文件? – nilrem

+0

您可以直接从Apache项目页面下载jar包。只是谷歌他们。 –