天天看点

java 浏览器下载图片_java通过浏览器,下载多张图片在压缩包中

直接附上工具类供参考

java 浏览器下载图片_java通过浏览器,下载多张图片在压缩包中
java 浏览器下载图片_java通过浏览器,下载多张图片在压缩包中

方便复制,粘出代码

-------------------------------------------------------------------------------------------

package maocco.smarts.facial.common;

import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import java.net.HttpURLConnection;

import java.net.URL;

import java.net.URLEncoder;

import java.util.List;

import java.util.zip.ZipEntry;

import java.util.zip.ZipOutputStream;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import maocco.smarts.facial.entity.Facial;

public class PhotoZip {

//imgUrls 图片地址的集合

public static void downloadPic(List 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 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;

}

}

-------------------------------------------------------------------------------------------

个人笔记,仅供参考

原文:https://www.cnblogs.com/1427wsl/p/12176583.html