1. private static final String OSS_ENDPOINT = PropertiesUtil.getString("oss.endpoint");
  2.  
  3. private static final String OSS_ACCESS_KEY = PropertiesUtil.getString("oss.access.key");
  4.  
  5. private static final String OSS_SECRET = PropertiesUtil.getString("oss.secret");
  6.  
  7. private static final String OSS_BUCKET_NAME = PropertiesUtil.getString("oss.bucket.name");
  8.  
  9. // private static final String OSS_CT_BUCKET_NAME =
  10. // PropertiesUtil.getString("oss.bucket.ct.name");
  11.  
  12. private static final OSSClient OSS_CLIENT = new OSSClient(OSS_ENDPOINT, OSS_ACCESS_KEY, OSS_SECRET);
  13.  
  14. /**
  15. * 批量下载oss 文件 并打成zip 包 返回到response中
  16. *
  17. * @param fileNames
  18. * oss上的文件名集合 如:product/image/3448275920.png  * @param zipFileName
  19. * 压缩包文件名
  20. * @param response
  21. * HttpServletResponse
  22. */
  23. public static void batchDownLoadOssFile(List<String> fileNames, String zipFileName, HttpServletResponse response) {
  24. response.setCharacterEncoding("utf-8");
  25. response.setContentType("multipart/form-data");
  26. //要下载成什么类型的文件,这里直接加后缀
  27. response.setHeader("Content-Disposition", "attachment;fileName=" + zipFileName + ".zip");
  28. BufferedInputStream bis = null;
  29. try {
  30. ZipOutputStream zos = new ZipOutputStream(response.getOutputStream());
  31. for (String fileName : fileNames) {
  32. Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000);
  33. GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(OSS_BUCKET_NAME, fileName,
  34. HttpMethod.GET);
  35. // 设置过期时间。
  36. request.setExpiration(expiration);
  37. // request.setContentType("application/pdf");
  38. // 生成签名URL(HTTP GET请求)。
  39. URL signedUrl = OSS_CLIENT.generatePresignedUrl(request);
  40. // 使用签名URL发送请求。
  41. OSSObject ossObject = OSS_CLIENT.getObject(signedUrl, new HashMap<>());
  42. if (ossObject != null) {
  43. InputStream inputStream = ossObject.getObjectContent();
  44. byte[] buffs = new byte[1024 * 10];
  45.  
  46. String zipFile = fileName.substring(fileName.lastIndexOf("/") + 1)+".pdf";
  47. ZipEntry zipEntry = new ZipEntry(zipFile);
  48. zos.putNextEntry(zipEntry);
  49. bis = new BufferedInputStream(inputStream, 1024 * 10);
  50.  
  51. int read;
  52. while ((read = bis.read(buffs, 0, 1024 * 10)) != -1) {
  53. zos.write(buffs, 0, read);
  54. }
  55. ossObject.close();
  56. }
  57. }
  58. zos.close();
  59. //关闭流
  60. IOUtil.close(bis);
  61. } catch (Exception e) {
  62. LOGGER.error("打包下载发生异常:",e);
  63. } finally {
  64. // 关闭流
  65. try {
  66. response.getOutputStream().flush();
  67. response.getOutputStream().close();
  68. } catch (IOException e) {
  69. e.printStackTrace();
  70. }
  71. }
  72. }

springboot框架,前端加一个接口

  1. @GetMapping(value = "/downloadBookZip")
  2. public void downloadBookZip(HttpServletRequest request,HttpServletResponse response) {
  3. String subjectIdstr = request.getParameter("subjectId");
  4. String className = request.getParameter("className");
  5. String studentNum = request.getParameter("studentNum");
  6. if(Strings.isNullOrEmpty(subjectIdstr)) {
  7. throw new BusinessException(BusinessExceptionEnum.PARAM_ERROR, "必须有科目ID");
  8. }
  9. Long subjectId = Long.parseLong(subjectIdstr);
  10. //查询生成文件路径
  11. List<String> list = wrongTopicDao.queryWrongTopicOssKey(subjectId,className,studentNum);
    //上面按照个人业务查询自己的文件key即可
  12. OssUtil.batchDownLoadOssFile(list, "books", response);
  13. }

oss打包下载的更多相关文章

  1. ASP.NET五步打包下载Zip文件

    本文版权归博客园和作者吴双共同所有,转载和爬虫请注明原文地址:www.cnblogs.com/tdws 首先分享几个振奋人心的新闻: 1.谷歌已经宣布加入.NET基金会 2.微软加入Linux基金会, ...

  2. 射手网字幕打包下载(73.16G)

    射手网陪着我度过15年了. 我所希望射手网所具有的价值,就是能令更多人跨越国家的樊篱,了解世界上不同的文化. 如果这个网站有帮到人,我就已经很满足了. 但是,需要射手网的时代已经走开了. 因此,今天, ...

  3. 2014年最新720多套Android源码2.0GB免费一次性打包下载

    之前发过一个帖子,但是那个帖子有点问题我就重新发一个吧,下面的源码是我从今年3月份开始不断整理源码区和其他网站上的android源码,目前总共有720套左右,根据实现的功能被我分成了100多个类,总共 ...

  4. ASP.NET 打包下载文件

    使用的类库为:ICSharpCode.SharpZipLib.dll 一种是打包整个文件夹,另一种是打包指定的多个文件,大同小异: using ICSharpCode.SharpZipLib.Zip; ...

  5. C#.NET快速开发框架-企业版V4.0截图打包下载

    C/S系统开发框架-企业版 V4.0 (Enterprise Edition) http://www.csframework.com/cs-framework-4.0.htm 其它图片打包下载: ht ...

  6. ASP.NET多文件批量打包下载

    在对多文件打包中用到了 DotNetZip 的方法来实现对多文件压缩打包.需要到http://dotnetzip.codeplex.com/处下载该文件,然后引用即可. Default.aspx: & ...

  7. 开源 & 免费使用 & 打包下载自行部署 :升讯威 周报系统

    这个周报系统大约写于2015年,缘起当时所带的开发团队需要逐步建立或完善一些项目管理方法. 在调研了网上的诸多项目管理或周报/日报管理系统之后,并没有找到符合当时情况的系统,这里最大的问题不是网上既有 ...

  8. java 实现多文件打包下载

    jsp页面js代码: function downloadAttached(){ var id = []; id.push(infoid); var options = {}; options.acti ...

  9. PHP实现zip压缩打包下载

    先来看PHP实现文件及文件夹的zip压缩 这里使用PHP扩展的ZipArchive类,在使用之前要将php.ini文件中的zlib.output_compression设置为On 代码如下: publ ...

随机推荐

  1. 100道iOS面试题

    面试题: 1__weak什么时候用 想要在block内部变外部变量需要加__weak或者__block 2.是否使用过coreImage和coreText?如果使用过,说说你的体验(答案在另一份) 3 ...

  2. 使用ASP.NET Core支持GraphQL( restful 配套)

    https://github.com/graphql-dotnet https://github.com/graphql GraphQL简介 官网:https://graphql.cn/code/ 下 ...

  3. CX ONE 不能全屏

    兼容性  win7 以管理员方式运行 1. 打开CX-Programmer,选择“工具”——“选项”:2. 点击“通用”选项卡,选择“高级”:3. 勾选“当下一次启动CX-Programmer时不显示 ...

  4. 解决安装eclipse时出现"Failed to load JNI shared library"

    下午远程帮别人弄了很久的eclipse,安装时老是出现如图的字样 最后在安装配置文件中找到问题所在,这个最新版本的eclipse需要jdk1.8的环境,由于系统的jdk是1.7,版本过低从而导致安装失 ...

  5. 最新 二三四五java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.二三四五等10家互联网公司的校招Offer,因为某些自身原因最终选择了二三四五.6.7月主要是做系统复习.项目复盘.Leet ...

  6. jqGrid刷新不取消选中

    也就是说,刷新前选中的行,刷新后还是选中 var jqGrid = $("#jqGrid"); // 获取刷新前选中的行id var jqGridRowid=jqGrid.jqGr ...

  7. 终端、虚拟终端、shell、控制台、tty的区别

    终端与控制台的区别? 最近开始接触Linux,终端.虚拟终端.shell.控制台.tty等概念让我很混乱,有必要认识清楚. 今天看到有人问终端和控制台的区别,而且这个问题比较有普遍性,因此想抽出一点时 ...

  8. PTA 8-1 jmu-java-流、文件与正则表达式 (5 分)

    0.字节流与文件 我的代码: public static byte[] readFile(String path){ File file = new File(path); FileInputStre ...

  9. Oracle 表的导入与导出

    周末任务:将一个表从一个库导到另一个库大致思路:用expdp 将表从一个实例导出 ,再用impdp将导出的 .dmp文件导入到另一个实例1.在实例 orcl 中准备一个用于导出的表: 进入实例为orc ...

  10. VisualStudioCode网页开发常用插件

    VS下载链接 提取码:usx8 VsCode扩展功能强大,在于他可以安装各种各样的插件来辅助开发.下面是我初学前端时常用的vscode开发插件 Chinese 汉化 Beautify 格式化javas ...