java读取网页图片路径并下载到本地
Posted 锋齐叶落
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java读取网页图片路径并下载到本地相关的知识,希望对你有一定的参考价值。
java读取网页图片路径并下载到本地
最近公司需要爬取一些网页上的数据,自己就简单的写了一个demo,其中有一些数据是图片,需要下载下来到本地并且
将图片的路径保存到数据库,示例代码如下:
package com.cellstrain.icell.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.Date;
public class DownloadImage {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
download("https://www.mybiosource.com/images/tds/protocol_images/1000000-6999999/MBS2031060_SDS.jpg","E:\\\\upload\\\\SDSPage");
}
public static String download(String urlPath,String savePath) throws Exception {
// 构造URL
URL url = new URL(urlPath);
// 打开连接
URLConnection con = url.openConnection();
//设置请求超时为5s
con.setConnectTimeout(5*1000);
// 输入流
InputStream is = con.getInputStream();
// 1K的数据缓冲
byte[] bs = new byte[1024];
// 读取到的数据长度
int len;
// 输出的文件流
File sf=new File(savePath);
if(!sf.exists()){
sf.mkdirs();
}
int randomNo=(int)(Math.random()*1000000);
String filename=urlPath.substring(urlPath.lastIndexOf("/")+1,urlPath.length());//获取服务器上图片的名称
filename=new java.text.SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date())+randomNo+filename;//时间+随机数防止重复
OutputStream os = new FileOutputStream(sf.getPath()+"\\\\"+filename);
String virtualPath="/upload/SDSPage/"+filename;//存入数据库的虚拟路径
// 开始读取
while ((len = is.read(bs)) != -1) {
os.write(bs, 0, len);
}
// 完毕,关闭所有链接
os.close();
is.close();
return virtualPath;
}
}
在E盘的upload文件下的SDSPage文件夹下就可以看到下载好的图片,将路径存到数据库后直接用el表达式就可以显示图片了,前提
是tomcat得配置好虚拟路径哦,如果不清楚怎么配置虚拟路径的可以查看http://www.cnblogs.com/qianzf/p/6781143.html
原文博客的链接地址:https://cnblogs.com/qzf/
以上是关于java读取网页图片路径并下载到本地的主要内容,如果未能解决你的问题,请参考以下文章
java 模拟登陆带验证码的网页,就想知道怎么将验证码以图片的形式下载到本地。。。。。