首页 > 编程语言 >nodejs通过s3-zip对AWS-S3服务上的文件下载操作

nodejs通过s3-zip对AWS-S3服务上的文件下载操作

时间:2024-11-07 10:59:27浏览次数:5  
标签:process zip nodejs s3 AWS S3 env

这里对接的是百度智能云对象存储服务,用的是aws-sdk进行服务对接的,遵照的标准都是AWS S3服务那一套标准。

1、aws s3服务对接的基本配置及操作流程参考博文:https://blog.csdn.net/LegendaryChen/article/details/129775304

2、单个存储文件对象的下载:

// 导入依赖
const AWS = require('aws-sdk');
app.get('/obj', function (req, res) {
  // 配置AWS凭证
  AWS.config.update({
    accessKeyId: process.env.AWS_S3_ACCESS_KEY_ID,
    secretAccessKey: process.env.AWS_S3_SECRET_ACCESS_KEY,
    region: process.env.AWS_S3_REGION,
    endpoint: process.env.AWS_S3_ENDPOINT
  });
  // 初始化S3服务  
  const s3 = new AWS.S3();
  // 图片文件路径和S3存储桶信息
  const keyName = "aaa.jpg";
  // 调用S3的putObject方法上传文件  
  const params = {
    // 这里的AWS_S3_BUCKET可以包含文件夹路径,比如桶名称是myBucket,myBucket下有一个路径aa
    // 则这里的AWS_S3_BUCKET可以设置为‘myBucket/aa’,这里获取到的文件就是‘myBucket/aa/aaa.jpg’
    Bucket: process.env.AWS_S3_BUCKET,
    Key: keyName
  };
  s3.getObject(params, function (err, data) {
    if (err) {
      console.info("下载失败: ", err);
    } else {
      // 文件名称
      res.attachment(params.Key);
      // 文件类型
      res.type(data.ContentType);
      // 文件内容
      res.send(data.Body);
      console.info("下载成功: " + bucketName + "/" + keyName);
    }
  });
});

3、批量文件下载,批量文件下载使用的是s3-zip工具包:

首先下载依赖:npm install s3-zip@^2;注意这里使用的是2.x版本的s3-zip依赖,因为直接使用“npm install s3-zip”下载的版本会有“TypeError: self.s3.send is not a function”错误提示, 具体参考:https://github.com/orangewise/s3-zip/issues/96;具体实现如下:
const AWS = require('aws-sdk');
const s3Zip = require('s3-zip');

app.get("/batchObj", function (req, res) {
  //配置信息
  const S3ClientConfig = new AWS.S3({
    accessKeyId: process.env.AWS_S3_ACCESS_KEY_ID,
    secretAccessKey: process.env.AWS_S3_SECRET_ACCESS_KEY,
signatureVersion: process.env.AWS_S3_SIGNATURE_VERSION, s3ForcePathStyle: true,
region: process.env.AWS_S3_REGION, endpoint: process.env.AWS_S3_ENDPOINT }) let files = ["hello.jpg", "world.jpg"]; // 桶下的文件路径 let folder = "/aa/bb/"; try { s3Zip.archive( { s3: S3ClientConfig, // 注意,这里的bucket不能含有‘/’,只能是桶名称,不能包含文件夹路径 bucket: process.env.AWS_S3_BUCKET }, folder, files ).pipe(res) } catch (error) { console.log(error); res.status(500); }

 以上是nodejs对接aws s3进行文件下载简单的功能实现。

   

标签:process,zip,nodejs,s3,AWS,S3,env
From: https://www.cnblogs.com/codeMedita/p/18531742

相关文章

  • Windows安装管理多个NodeJS版本
    下载nvm管理工具,下载完成解压安装https://github.com/coreybutler/nvm-windows/releases选择nvm安装位置选择nvm安装node版本的安装位置如果提示你已经安装的有nodejs,提示你是否通过nvm管理nodejs,选择是,继续安装即可Win+R打开cmd命令窗口nvm-v查看安装的nv......
  • 纯HTML5+CSS3实现一棵自己跳舞的树
    代码没有多少,也没有用到任何图片,就实现了一棵可以自己跳舞的树。文件组成就简简单单的一个html和一个csshtml部分并不是很复杂,就是一些空的div,然后加上html模板也就那么十来行代码最关键的还是css部分,也不是很多,总共一百来行但就是上面这么简简单单的两个文件可以绘画出一......
  • iedkcs32.dll文件丢失如何是好?详解找回IE浏览器加密DLL文件的方案
    在使用InternetExplorer(IE)浏览器时,有时可能会遇到iedkcs32.dll文件丢失的问题。这个文件是IE浏览器的一个重要组成部分,负责处理加密和解密任务,确保浏览器的安全通信。一旦iedkcs32.dll文件丢失,IE浏览器可能无法正常工作,甚至可能无法启动。那么,当iedkcs32.dll文件丢失时,我们应......
  • 双token无感刷新nodejs+vue3(保姆级教程)
    什么是双Token无感刷新?双Token无感刷新机制使用两个不同的token来管理用户的身份验证和会话。通常情况下,这两个token是:访问Token(AccessToken):用于访问受保护的资源,通常具有较短的有效期(如15分钟到1小时)。当用户进行API请求时,附带此token以证明其身份。刷......
  • Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
    @目录一、业务背景二、实现思路二、准备工作1.准备data模板.xlsx2.引入poi相关依赖,用于操作excel3.针对WorkBook+ZIP压缩输入/输出流,相关方法知识点要有所了解三、完整的项目代码四、可能遇到的问题错误场景1:java.io.IOException:Streamclosed错误场景2:调用接口没有另存为弹窗,......
  • 超级详细的GNS3最新版3-2.2.50安装配置教程,网工速度收藏!
    你好,这里是网络技术联盟站,我是瑞哥。上周给大家分享了GNS3安装包。粉丝求助,能否提供GNS3安装包,全家桶安排!周末的时候有小伙伴在安装的时候遇到了一些问题,瑞哥周末特地从头安装了一下GNS3,今天给大家出个安装的教程,每一步的步骤我都截图了下来,希望对大家有所帮助!安装GNS......
  • 基于nodejs+vue悦全公司人事管理系统[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于人事管理系统的研究,现有研究主要集中在通用型人事管理系统的构建与功能实现上,如常见的用户管理、数据备份等功能的实现 [2] 。专门针对悦全公司这......
  • SpringBoot同城驴友社区的开发与实现46s3v(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景随着生活水平的提高和旅游观念的普及,越来越多的人热衷于户外活动和短途旅行。然而,在寻找旅行伴侣、分享旅行经验和获取旅行信息方面,驴......
  • 基于nodejs+vue月嫂服务管理系统[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于家政服务管理系统的研究,现有研究多集中在家政服务的整体管理框架方面,如[2]中对家政服务管理系统的一般性设计与实现的探讨。然而专门针对月嫂服务管......
  • 基于nodejs的Web的牛场管理系统(源码+文档+部署讲解等)
    课题简介基于nodejs的Web的牛场管理系统是一款针对牛场运营管理的综合性系统,包含源码、文档和部署讲解。它涵盖牛只信息管理(包括品种、年龄、性别、健康状况、繁殖记录等)、饲料管理(饲料种类、库存、投喂计划和记录)、疾病防控(疾病诊断、治疗记录、疫苗接种计划)、养殖环......