实现背景
由于原本OSS服务器即将过期,需要将存在数据库里的oss_url中的地址取出,访问该地址并保存图片
代码实现
核心下载代码
private void download(List<String> listImgSrc) {
try {
for (String url : listImgSrc) {
String imageName = url.substring(url.lastIndexOf("/") + 1, url.length());
URL uri = new URL(url);
InputStream in = uri.openStream();
FileOutputStream fo = new FileOutputStream(new File("D:\\Personal\\Desktop\\goods\\"+imageName));
byte[] buf = new byte[1024];
int length = 0;
System.out.println("开始下载:" + url);
while ((length = in.read(buf, 0, buf.length)) != -1) {
fo.write(buf, 0, length);
}
in.close();
fo.close();
System.out.println(imageName + "下载完成");
}
} catch (Exception e) {
System.out.println("下载失败");
}
}
结合读取数据库完整代码:
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
/**
* @author Cheertan
* @date 2021-01-20
*/
public class CatchImage {
// 地址
private static final String URL = "http://url";
// 编码
private static final String ECODING = "UTF-8";
// 获取img标签正则
private static final String IMGURL_REG = "<img.*src=(.*?)[^>]*?>";
// 获取src路径的正则
private static final String IMGSRC_REG = "http:\"?(.*?)(\"|>|\\s+)";
public static void main(String[] args) throws Exception {
List<String> imageUrl = new ArrayList<>();
try {
//调用Class.forName()方法加载驱动程序
Class.forName("com.mysql.jdbc.Driver");
System.out.println("成功加载MySQL驱动!");
String url = "jdbc:mysql://localhost/litemall?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true";
Connection conn;
conn = DriverManager.getConnection(url, "root", "balabala");
Statement stmt = conn.createStatement();
System.out.println("成功连接到数据库!");
String sql = "select pic_url from litemall_goods";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
//这里getString后的数字代表筛选出的结果所在的列数,从1开始计数
imageUrl.add(rs.getString(1));
System.out.println();
}
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
CatchImage cm = new CatchImage();
//下载图片
cm.download(imageUrl);
}
private void download(List<String> listImgSrc) {
try {
for (String url : listImgSrc) {
String imageName = url.substring(url.lastIndexOf("/") + 1, url.length());
URL uri = new URL(url);
InputStream in = uri.openStream();
FileOutputStream fo = new FileOutputStream(new File("D:\\Personal\\Desktop\\goods\\"+imageName));
byte[] buf = new byte[1024];
int length = 0;
System.out.println("开始下载:" + url);
while ((length = in.read(buf, 0, buf.length)) != -1) {
fo.write(buf, 0, length);
}
in.close();
fo.close();
System.out.println(imageName + "下载完成");
}
} catch (Exception e) {
System.out.println("下载失败");
}
}
}