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

2025-05-29 0 97

压缩文件代码工具类:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58
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(InputStream is) {

ByteArrayOutputStream baos = new ByteArrayOutputStream();

byte[] buffer = new byte[1024];

int length = -1;

try {

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

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;

}

}

控制层代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27
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);

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("FileNotFoundException", 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下载,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对快网idc网站的支持!

原文链接:http://blog.csdn.net/sinat_32849651/article/details/77098161

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 JAVA 根据Url把多文件打包成ZIP下载实例 https://www.kuaiidc.com/115392.html

相关文章

发表评论
暂无评论