@RequestMapping("downFiles")
@ResponseBody
public void downFiles(HttpServletResponse response, @RequestParam String videoIds) {
String[] video = videoIds.split(",");
ZipOutputStream zipos = null;
DataOutputStream os = null;
try {
long time = System.currentTimeMillis();
response.setHeader("Content-Disposition", "attachment;fileName=\"" + "videos" + "_" + time + ".zip" + "\"");
zipos = new ZipOutputStream(new BufferedOutputStream(response.getOutputStream()));
zipos.setMethod(ZipOutputStream.DEFLATED); //设置压缩方法
} catch (Exception e) {
e.printStackTrace();
}
for (String videoId : video) {
Map map = new HashMap();
map.put("videoId", videoId);
List<ChannelVideoList> list = channelVideoListMapper.selectByParams(map);
if (list != null && list.size() > 0) {
ChannelVideoList channelVideoList = list.get(0);
if (StringUtil.isNotNullOrEmpty(channelVideoList.getPath())) {
String url = "";
HttpURLConnection conn = null;
InputStream is = null;
try {
url = "http://www.baidu.com";
URL url1 = new URL(url);
conn = (HttpURLConnection) url1.openConnection();
conn.setConnectTimeout(30000);
//解决getContentLength为0问题
conn.setRequestProperty("Accept-Encoding", "identity");
conn.connect();
is = conn.getInputStream();
zipos.putNextEntry(new ZipEntry(channelVideoList.getVideoId() + "." + channelVideoList.getFormat()));
os = new DataOutputStream(zipos);
byte[] b = new byte[1024];
int length = 0;
while ((length = is.read(b)) != -1) {
os.write(b, 0, length);
}
} catch (Exception e) {
logger.error("downFiles error:{}", e.toString());
} finally {
try {
conn.disconnect();
} catch (Exception e) {
}
try {
is.close();
} catch (Exception e) {
}
try {
zipos.closeEntry();
} catch (IOException e) {
}
}
}
}
}
try {
os.flush();
} catch (IOException e) {
}
try {
os.close();
} catch (IOException e) {
}
try {
zipos.close();
} catch (IOException e) {
}
}