package com.dagen.imgs.util;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class PhotoZip {
//imgUrls 图片地址的集合
public static void downloadPic(List<String> imgUrls, HttpServletRequest request, HttpServletResponse response) throws Exception {
ZipOutputStream zos = new ZipOutputStream(response.getOutputStream());
try {
String downloadFilename = "图片.zip";// 文件的名称
downloadFilename = URLEncoder.encode(downloadFilename, "UTF-8");// 转换中文否则可能会产生乱码
response.setContentType("application/octet-stream");// 指明response的返回对象是文件流
response.setHeader("Content-Disposition","attachment;filename="+downloadFilename);// 设置在下载框默认显示的文件名
String[] files = new String[imgUrls.size()];
imgUrls.toArray(files);
for (int i = 0; i < files.length; i++) {
String url = files[i];
zos.putNextEntry(new ZipEntry("download" + File.separator+i+ ".jpg"));
InputStream fis = getInputStreamByGet(url);
byte[] buffer = new byte[1024];
int r = 0;
while ((r = fis.read(buffer)) != -1) {
zos.write(buffer, 0, r);
}
fis.close();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
zos.flush();
zos.close();
}
}
public static void downloadPic1(String imgUrls, HttpServletRequest request, HttpServletResponse response) throws Exception {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
InputStream is = getInputStreamByGet(imgUrls);
byte[] bytes = readInputStream(is);
ServletOutputStream outputStream = response.getOutputStream();
String downloadFilename = simpleDateFormat.format(new Date())+imgUrls.substring(imgUrls.lastIndexOf("."));// 文件的名称
response.setContentType("application/octet-stream");// 指明response的返回对象是文件流
response.setHeader("Content-Disposition","attachment;filename="+downloadFilename);// 设置在下载框默认显示的文件名
outputStream.write(bytes);
is.close();
outputStream.flush();
outputStream.close();
}
public static byte[] readInputStream(InputStream inputStream) throws IOException {
byte[] buffer = new byte[1024];
int len = 0;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while((len = inputStream.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
bos.close();
return bos.toByteArray();
}
public static InputStream getInputStreamByGet(String url) {
try {
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
conn.setReadTimeout(5000);
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
InputStream inputStream = conn.getInputStream();
return inputStream;
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
List list=new ArrayList();
list.add("D:\\imgs\\123.png");
list.add("D:\\imgs\\a.png");
System.out.println(list);
}
}
java 下载单张,多张图片到本地
最新推荐文章于 2022-05-26 09:28:25 发布