通过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; } }