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

直接附上工具类供参考

16a129c7c806878a15649f865eae776c.png

db4e34dfea04530a5ea37298303a4624.png

方便复制,粘出代码

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

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;

}

}

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

个人笔记,仅供参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值