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();
}
}