通过JAVA循环调用照片下载链接
java
package cn.com.goldwind.ercp.fems.controller.common;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Arrays;
import java.util.List;
/**
* 批量下载附件
* 图片名称为fileKey
*/
public class SimpleImageDownloader {
// 配置超时时间(毫秒)
private static final int CONNECT_TIMEOUT = 5000;
private static final int READ_TIMEOUT = 10000;
public static void main(String[] args) {
// 1. 定义要下载的图片URL列表
List<String> imageUrls = Arrays.asList(
"https://baidu.com/fems/file/download/aad4803c8cb1479e98215cbc1def9d24"
,"https://baidu.com/fems/file/download/2c25033166684effa09bb20ac71b38f5"
);
String saveDir = "E:/downloaded_images"; // 保存目录
// 2. 循环执行下载
for (int i = 0; i < imageUrls.size(); i++) {
String urlStr = imageUrls.get(i);
try {
System.out.println("正在下载第 " + (i + 1) + "/" + imageUrls.size() + " 张: " + urlStr);
downloadFile(urlStr, saveDir);
System.out.println("成功: " + urlStr);
} catch (Exception e) {
System.err.println("失败: " + urlStr + " - 错误信息: " + e.getMessage());
}
}
System.out.println("所有任务处理完毕。");
}
/**
* 下载单个文件
*/
public static void downloadFile(String fileUrl, String saveDir) throws IOException {
URL url = new URL(fileUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 设置请求属性
connection.setRequestMethod("GET");
connection.setConnectTimeout(CONNECT_TIMEOUT);
connection.setReadTimeout(READ_TIMEOUT);
// 模拟浏览器User-Agent,防止被某些服务器拦截
connection.setRequestProperty("User-Agent", "Mozilla/5.0");
// 检查响应码
int responseCode = connection.getResponseCode();
if (responseCode != HttpURLConnection.HTTP_OK) {
throw new IOException("HTTP错误码: " + responseCode);
}
// 获取输入流
InputStream inputStream = connection.getInputStream();
// 生成文件名:从URL最后部分截取,如果无法获取则用时间戳
String fileName = getFileNameFromUrl(fileUrl);
File dir = new File(saveDir);
if (!dir.exists()) {
dir.mkdirs();
}
File outputFile = new File(dir, fileName);
// 写入文件
try (FileOutputStream outputStream = new FileOutputStream(outputFile)) {
byte[] buffer = new byte[2048];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
} finally {
inputStream.close();
connection.disconnect();
}
}
/**
* 从URL中提取文件名
*/
private static String getFileNameFromUrl(String urlStr) {
String[] parts = urlStr.split("/");
String fileName = parts[parts.length - 1];
// 如果文件名不包含扩展名或为空,给予默认名
// if (fileName.isEmpty() || !fileName.contains(".")) {
// fileName = "image_" + System.currentTimeMillis() + ".jpg";
// }
fileName += ".jpg";
return fileName;
}
}