当前位置:  编程技术>java/j2ee

Java 通过设置Referer反盗链

    来源: 互联网  发布时间:2014-10-18

    本文导语:  下面是完整的代码。 代码如下:package cn.searchphoto.util; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.net.URLConnection; import java.util.zip.GZIPInputStream; /** * 下载远程网站...

下面是完整的代码。
代码如下:

package cn.searchphoto.util;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.zip.GZIPInputStream;
/**
* 下载远程网站的图片,通过设置Referer反反盗链。
*
* @author JAVA世纪网(java2000.net, laozizhu.com)
*/
public class ImageDownloader {
/**
* 下载文件到指定位置
* @param imgurl 下载连接
* @param f 目标文件
* @return 成功返回文件,失败返回null
*/
public static File download(String imgurl, File f) {
try {
URL url = new URL(/tech-java/imgurl/index.html);
URLConnection con = url.openConnection();
int index = imgurl.indexOf("/", 10);
con.setRequestProperty("Host", index == -1 ? imgurl.substring(7) : imgurl.substring(7, index));
con.setRequestProperty("Referer", imgurl);
InputStream is = con.getInputStream();
if (con.getContentEncoding() != null && con.getContentEncoding().equalsIgnoreCase("gzip")) {
is = new GZIPInputStream(con.getInputStream());
}
byte[] bs = new byte[1024];
int len = -1;
OutputStream os = new FileOutputStream(f);
try {
while ((len = is.read(bs)) != -1) {
os.write(bs, 0, len);
}
} finally {
try {
os.close();
} catch (Exception ex) {}
try {
is.close();
} catch (Exception ex) {}
}
return f;
} catch (Exception ex) {
ex.printStackTrace();
return null;
}
}
}

    
 
 

您可能感兴趣的文章:

  • 现在java开发中流行通过什么方式实现对数据库操作?就好像Visual Stadio通过ADO访问数据库。
  • 假设现在对且仅对java基础比较熟悉(通过scjp),要做一个java proxy的软件,步聚是什么?
  • 输出java进程的jstack信息示例分享 通过线程堆栈信息分析java线程
  • 请问用javac编译一般*.java能通过,但不能编译Servlet写的*.java.提示javax.servlet.http不存在。
  • 用java通过pop3怎样得到附件?
  • 我想问一下,java生成的.class文件能不能通过某种工具生成.exe文件?
  • 万般火急!关于java打印,已经得到printerJob实例,那么怎么通过它得到Pageable实例?
  • unix环境如何通过shell或java获取windows机器上的csv文件?
  • vc通过socket发送数据给java的问题
  • 如何通过java程序调用vb程序
  • 为什么用javac编译通过了,用java链接就不行呢?
  • 如何通过java收发邮件?
  • 请问,如何通过Java调用ActiveX控件?
  • linux与java如何通过socket传float类型
  • 各位大虾,为什么我的java程序能通过编译,但是在用java命令运行程序的时候却老是报错“Exception in thread "main" java.lang.NoClassDe
  • java通过stock与mysql通信时出现乱码的问题
  • 请高手指教-[急!!!]怎样在linux与 window 之间,通过 C或Java 进行通信
  • 请问用java通过pop3协议如何获取信件内容.
  • 急,在线等待,Java程序怎样在linux下通过脚本启动时自动运行?
  • 怎样用Java语言写通过HTTP协议传送数据的程序啊?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 操作系统 iis7站长之家
  • 如何设置java应用程序的风格,如java风格,和windows风格!
  • 在ms-dos中用javac调试java.很多东西比如java_home,classpath等如何设置?
  • 简单的问题:java的类怎么设置!!!谢谢!!!
  • Linux下的Java如何设置路径
  • 求助--java 如何设置环境变量??
  • 菜鸟问题,java.library.path如何设置?
  • Free Java的初始设置问题----初学者求教.
  • JAVA的JDialog或JFame如何设置只允许扩大,不允许缩小
  • 为什么我在FC6下设置java_home完毕后在登录又没有了
  • 请碰到过的哥们回应。Java GUI程序中如何设置显示字体呢?
  • win98下怎么设置Java环境变量!!! 一定给分
  • Java能够设置Graphics2D的DrawString的字体的粗细吗?不是指字体大小!
  • 请问在Linux里,如何用JAVA读取内存里的PATH设置
  • 红旗java环境设置
  • 菜鸟问题,Java图形编程里,怎么设置一个panel的大小?
  • 刚开始学,问个很菜的问题.装了JAVA1.2.2需要做什么样的设置.
  • 用java开发数据库,连接db2应该如何设置classpath (或者说应引入哪个包)
  • java下怎么把BufferedImage转成jpg,关键是如何设置jpg的压缩比。
  • 用JBuilder还用不用设置Java的开发环境?
  • 请大家帮忙!Sun Java认证具体情况:费用,资料,课程设置等
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3