package com.xxl.job.executor.jobhandler.abk;
import com.abk.core.handler.BaseJobHandler;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.JobHandler;
import com.xxl.job.core.log.XxlJobLogger;
import com.xxl.job.executor.config.db.dao.AbkDao;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.concurrent.*;
/**
* 下载图片
*/
@Slf4j
@Component
@JobHandler(value = "ImgDownloadHandler")
public class ImgDownloadHandler extends BaseJobHandler {
static String FILE_ADDR = "/data/chuangmingIMG2";
@Override
public ReturnT<String> execute() throws Exception {
String json = "imgurl";
JSONArray array = JSONArray.parseArray(json);
for (int i = 0; i < array.size(); i++) {
String orderNum = array.getJSONObject(i).getString("order_num");
String imgs = array.getJSONObject(i).getString("img");
String[] imgArr = imgs.split(",");
if (imgArr.length > 0) {
for (int j = 0; j < imgArr.length; j++) {
try {
download(imgArr[j], orderNum , j);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
return ReturnT.SUCCESS;
}
//java 通过url下载图片保存到本地
public static void download(String urlString, String orderNum,int idx) throws Exception {
// 构造URL
URL url = new URL(urlString);
// 打开连接
URLConnection con = url.openConnection();
// 输入流
InputStream is = con.getInputStream();
// 1K的数据缓冲
byte[] bs = new byte[1024];
// 读取到的数据长度
int len;
// 输出的文件流
String dir = FILE_ADDR + "/" + orderNum; //下载路径及下载图片名称
File dirFile = new File(dir);
judeDirExists(dirFile);
String filePath = dir +"/"+ orderNum + "_" + idx + ".jpg";
File file = new File(filePath);
FileOutputStream os = new FileOutputStream(file, true);
// 开始读取
while ((len = is.read(bs)) != -1) {
os.write(bs, 0, len);
}
System.out.println(orderNum);
// 完毕,关闭所有链接
os.close();
is.close();
}
// 判断文件夹是否存在
public static void judeDirExists(File file) {
if (file.exists()) {
if (file.isDirectory()) {
System.out.println("dir exists");
} else {
System.out.println("the same name file exists, can not create dir");
}
} else {
System.out.println("dir not exists, create it ...");
file.mkdir();
}
}
}
通过URL下载图片
最新推荐文章于 2024-05-03 09:00:00 发布