java图片打包成zip_JAVA将图片下载至文件夹,然后将文件夹压缩成ZIP的Demo

packagein.iask.service;importin.iask.dao.SysAppDao;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;import java.io.*;importjava.net.HttpURLConnection;importjava.net.URL;importjava.net.URLEncoder;importjava.util.ArrayList;importjava.util.List;importjava.util.Map;importjava.util.zip.ZipEntry;importjava.util.zip.ZipOutputStream;

@Servicepublic classSysAppService {

@AutowiredprivateSysAppDao sysAppDao;public List>getAllSysApp(){returnsysAppDao.getAllSysApp();

}public voidgetZip(HttpServletRequest request, HttpServletResponse response){

List> allSysApp =getAllSysApp();

}public void downloadPic(HttpServletRequest request, HttpServletResponse response) throwsIOException {

List> allSysApp =getAllSysApp();

List imgUrls = new ArrayList<>();

allSysApp.parallelStream().limit(3).forEach(m -> imgUrls.add((String) m.get("logo_img")));try{

String downloadFilename= "中文.zip";//文件的名称

downloadFilename = URLEncoder.encode(downloadFilename, "UTF-8");//转换中文否则可能会产生乱码

response.setContentType("application/octet-stream");//指明response的返回对象是文件流

response.setHeader("Content-Disposition", "attachment;filename=" + downloadFilename);//设置在下载框默认显示的文件名

ZipOutputStream zos = newZipOutputStream(response.getOutputStream());

String[] files= newString[imgUrls.size()];

imgUrls.toArray(files);for (int i = 0; i < files.length; i++) {

String url=files[i];

zos.putNextEntry(new ZipEntry("temp_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();

}

zos.flush();

zos.close();

}catch(UnsupportedEncodingException e) {//TODO Auto-generated catch block

e.printStackTrace();

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}//通过get请求得到读取器响应数据的数据流

public staticInputStream getInputStreamByGet(String url) {try{

HttpURLConnection conn= (HttpURLConnection) newURL(url).openConnection();

conn.setReadTimeout(5000);

conn.setConnectTimeout(5000);

conn.setRequestMethod("GET");if (conn.getResponseCode() ==HttpURLConnection.HTTP_OK) {

InputStream inputStream=conn.getInputStream();returninputStream;

}

}catch(IOException e) {

e.printStackTrace();

}return null;

}/*** 得到图片字节流 数组大小

**/

public static byte[] readStream(InputStream inStream) throwsException{

ByteArrayOutputStream outStream= newByteArrayOutputStream();byte[] buffer = new byte[1024];int len = -1;while((len = inStream.read(buffer)) != -1){

outStream.write(buffer,0, len);

}

outStream.close();

inStream.close();returnoutStream.toByteArray();

}

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值