JAVA 根据Url把多文件打包成ZIP下载实例

网友投稿 420 2023-04-20


JAVA 根据Url把多文件打包成ZIP下载实例

压缩文件代码工具类:

public class UrlFilesToZip {

private static final Logger logger = LoggerFactory.getLogger(UrlFilesToZip.class);

//根据文件链接把文件下载下来并且转成字节码

public byte[] getImageFromURL(String urlPath) {

byte[] data = null;

InputStream is = null;

HttpURLConnection conn = null;

try {

URL url = new URL(urlPath);

conn = (HttpURLConnection) url.openConnection();

conn.setDoInput(true);

// conn.setDoOutput(true);

conn.setRequestMethod("GET");

conn.setConnectTimeout(6000);

is = conn.getInputStream();

if (conn.getResponseCode() == 200) {

data = readInputStream(is);

} else {

data = null;

}

} catch (MalformedURLException e) {

logger.error("MalformedURLException", e);

} catch (IOException e) {

logger.error("IOException", e);

} finally {

try {

if (is != null) {

is.close();

}

} catch (IOException e) {

logger.error("IOException", e);

}

conn.disconnect();

}

return data;

}

public byte[] readInputStream(InputStrhttp://eam is) {

ByteArrayOutputStream baos = new ByteArrayOutputStream();

byte[] buffer = new byte[1024];

int length = -1;

try {

while ((length = is.read(buffer)) != -1) {

lQMXQNNFUs baos.write(buffer, 0, length);

}

baos.flush();

} catch (IOException e) {

logger.error("IOException", e);

}

byte[] data = baos.toByteArray();

try {

is.close();

baos.close();

} catch (IOException e) {

logger.error("IOException", e);

}

return data;

}

}

控制层代码:

public void filesdown(HttpServletResponse response){

try {

String filename = new String("xx.zip".getBytes("UTF-8"), "ISO8859-1");//控制文件名编码

ByteArrayOutputStream bos = new ByteArrayOutputStream();

ZipOutputStream zos = new ZipOutputStream(bos);

UrlFilesToZip s = new UrlFilesToZip();

int idx = 1;

for (String oneFile : urls) {

zos.putNextEntry(new ZipEntry("profile" + idx);

byte[] bytes = s.getImageFromURL(oneFile);

lQMXQNNFUs zos.write(bytes, 0, bytes.length);

zos.closeEntry();

idx++;

}

zos.close();

response.setContentType("application/force-download");// 设置强制下载不打开

response.addHeader("Content-Disposition", "attachment;fileName=" + filename);// 设置文件名

OutputStream os = response.getOutputStream();

os.write(bos.toByteArray());

os.close();

} catch (FileNotFoundException ex) {

logger.error("FilelQMXQNNFUsNotFoundException", ex);

} catch (Exception ex) {

logger.error("Exception", ex);

}

}

}

注意:

1. String filename = new String(“xx.zip”.getBytes(“UTF-8”), “ISO8859-1”);包装zip文件名不发生乱码。

2.一定要注意,否则会发生下载下来的压缩包无法解压。在给OutputStream 传值之前,一定要先把ZipOutputStream的流给关闭了!

总结

以上所述是给大家介绍的java 根据Url把多文件打包成ZIP下载,希望对大家有所帮助,如果大家有任何疑问请给我留言,会及时回复大家的。在此也非常感谢大家对我们网站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Vue数组更新及过滤排序功能
下一篇:Java Ehcache缓存框架入门级使用实例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~