如何从@google-cloud/storage读取文件?

2024-05-16

我正在从我的存储桶中检索文件。

我收到该文件并想要阅读其内容,但我不想将其下载到我的本地项目 我只想读取内容,获取数据并用它进行其他操作。

我的代码:

export const fileManager = async () => {
  try {
    const source = 'upload/';

    const options = { prefix: source, delimiter: '/' };

    const remoteFile = st.bucket(bName).file('myData.csv');

    const readFileData;

    remoteFile
      .createReadStream()
      .on('error', err => {
        console.log('error');
      })
      .on('response', response => {
        readFileData = response;
        console.log('success');
        // Server connected and responded with the specified status and headers.
      })
      .on('end', () => {
        console.log('end');
        // The file is fully downloaded.
      });

console.log("data", readFileData)

  } catch (error) {
    console.log('Error Is', error);
  }
};

readFileData 未定义。

这可能吗?我找到的每个示例都涉及我下载文件。


createReadStream是异步的并且立即返回。您必须使用回调来确定下载到内存何时完成。现在,您的代码总是会打印“数据未定义”,因为它试图在响应可用之前打印响应。

createReadStream绝对是正确的方法,但你必须明白节点流如何工作 https://nodejs.org/api/stream.html以便正确处理结果。链接文档中有一个完整的部分阅读流 https://nodejs.org/api/stream.html#stream_readable_streams,这就是您想要在这里执行的操作。处理流的方式并非特定于 Cloud Storage - 对于所有节点流都是相同的。

以下有关读取节点流的问题的答案可能会对您有所帮助:

  • Node.js:如何将流读入缓冲区? https://stackoverflow.com/questions/14269233/node-js-how-to-read-a-stream-into-a-buffer
  • 将流转换为缓冲区? https://stackoverflow.com/questions/19906488/convert-stream-into-buffer
  • 如何将 Node.js 流的内容读入字符串变量? https://stackoverflow.com/questions/10623798/how-do-i-read-the-contents-of-a-node-js-stream-into-a-string-variable
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从@google-cloud/storage读取文件? 的相关文章

  • JAVASCRIPT - 为什么这个对象没有改变?

    function myFunc theObject theObject make Ford model Focus year 2006 var mycar make Honda model Accord year 1998 var x my
  • 在上传之前预览图像 VUEjs [重复]

    这个问题在这里已经有答案了 我知道这个问题已经被问过 但我不知道如何在vuejs中使用代码 我尝试了很多但没有任何结果 我还添加了我的代码 有人可以帮帮我吗 这是我的代码 谢谢 html
  • 如何将 Ajax.BeginForm MVC 助手与 JSON 结果一起使用?

    我正在尝试使用 ASP NET MVC Ajax BeginForm 帮助程序 但不想在调用完成时使用现有的内容插入选项 相反 我想使用自定义 JavaScript 函数作为回调 这可行 但我想要的结果应该以 JSON 形式返回 不幸的是
  • 如何将一个数组中的所有项目复制到另一个数组中?

    如何将数组的每个元素 其中元素是对象 复制到另一个数组中 以便它们完全独立 我不想更改一个数组中的元素来影响另一个数组 这里的关键是 数组中的条目是对象 并且 您不希望对一个数组中的对象的修改显示在另一个数组中 这意味着我们不仅需要将对象复
  • 正则表达式中连字符的这种用法有效吗?

    NB I only想知道它是否是正则表达式定义中未转义连字符的有效应用 它是not关于匹配电子邮件 连字符或反斜杠的含义 量词或其他任何内容的问题 另外 请注意 链接的答案并没有真正讨论转义 未转义连字符之间的有效性问题 通常我会像这样声明
  • 使用javascript以编程方式触发iOS safari中的复制菜单?

    我正在尝试实现一种用户友好的方式 将一些文本从文本输入字段复制到 iOS Safari 上的剪贴板 我知道无法在这个平台上以编程方式完成此操作 但我希望能够尽可能地指导用户体验 在 iOS Safari 上 当用户手动突出显示某些文本时 会
  • Express.js 中的自定义回调 get

    我的 app js 中有一个 get app get api personnel api personnel 调用此函数作为回调以从 mongo 加载一些数据 exports personnel function req res var d
  • Chrome --app 相当于 Firefox\IE

    我有一个网络应用程序 客户要求单击不同按钮时更改浏览器窗口大小 我发现在那link https stackoverflow com questions 13436855 launch google chrome from the comma
  • 从链接打开本地文件夹

    如何通过单击任何链接打开本地文件夹视图 我尝试了很多选择 例如 a href Open folder a or a Open folder a or a Open folder a 解决方案 启动可下载链接 以下内容适用于所有浏览器 但一如
  • ES6 模块范围

    我有代码 lib js var a a export var b b main js console log a a variable is not available in a global scope import b from lib
  • node.js 模块/导出系统:是否可以将模块导出为函数

    我想在 Dispatch js 中做这样的事情 function handle msg exports handle 这在调用index js中 var dispatch require Dispatch dispatch data 有任何
  • 使用express.js动态加载路线

    我使用express js作为网络服务器 并且想要一种简单的方法来将所有 app get 和 app post 函数分开以分隔文件 例如 如果我想为登录页面指定 get 和 post 函数 我希望在动态加载的路由文件夹中有一个 login
  • javascript - 如何获取对象名称或关联数组索引名称?

    我有一个像这样的 JSON 对象 var list name1 element1 value1 name2 element1 value2 如何提取所有 nameX 字符串值 例如 假设我想将它们连接在一个字符串中输出 例如 name1 n
  • Google 地图 API - 地图未显示 - 没有错误

    我正在尝试将地图从 Google API 加载到 div 中 但是 地图未加载 并且没有输出任何错误 这是代码 google maps var geocoder map function codeAddress address geocod
  • 如何解决“消息端口在收到响应之前已关闭”的问题。在 JavaScript 中的 window.location.reload() 之后

    我遇到了 javascript 问题 从 chrome v73 0 3683 86 开始 每当我在 window location reload 函数之后运行 javascript 代码时 它总是给我错误 Unchecked runtime
  • 如何在 TypeScript 中使用 navigation.replace ?

    我试图在我的代码中使用它 const navigation useNavigation navigation replace AllFriends 但我不断收到错误消息 Property replace does not exist on
  • Three.js点击单个粒子

    In this example http jsfiddle net agqq96bq 2 您可以看到 2 个可点击的粒子 但它们都受到点击的影响 另外 我只想检测粒子上的点击 而不将它们过滤出场景 像这儿 if intersects len
  • Vue - 调度完成后调用 store getter?

    我正在使用 Laravel 5 7 Vue2 Vuex 我在调度调用完成后让 Vue 返回存储值时遇到一些困难 我的申请流程如下 我单击一个提交按钮 该按钮调用组件上的 validate Validate 分派到我的 addLease 操作
  • 将引导程序弹出框保留在视口内

    我正在尝试使用带有按钮的侧边栏创建一个菜单 每个按钮都有一个指定的包含相关数据的弹出窗口 不幸的是 其中一个弹出窗口可能包含任意数量的行 并且在某些情况下它可能部分位于视口之外 See http jsfiddle net bfd9f 1 h
  • 如何让 webpack 和 iis express 协同工作?

    I have Angular 2 和 Webpack 2 入门 https github com qdouble angular webpack2 starter它通过 webpack dev server 在节点上运行 我如何使用 web

随机推荐

  • 是否存在类似 number 的内容?

    当我们使用 a href number a or a href mailid a 对于电话号码和电子邮件 类似的事情 a href number a 传真存在吗 是的 电话 传真和调制解调器 URL 方案在https www ietf or
  • C++套接字256字节缓冲区

    我正在尝试在 C 中使用一些套接字网络编程 我正在尝试发送文本 Hello World 使用 C send 函数发送到服务器 首先 我将缓冲区的大小设置为 13 因为 Hello World 总共是 12 个字符 必须比字符数多 1 个 如
  • 如何获取knex / mysql中所有更新记录的列表

    这是我正在处理的查询 return knex table returning id where boolean false andWhere fooID foo id update boolean true limit num then f
  • 使用 Microsoft Graph 读取所有用户日历

    我给我的应用程序指定了以下范围 SCOPES Calendars Read User Read All 我得到了一个访问令牌 有了这个令牌 我就能够获得用户 并且获得两个用户 这是正确的 当我询问我自己 管理员 的日历时 https gra
  • 如何从 Rails 中的 date_select 或 select_date 获取日期?

    Using select date给我回一个params my date with year month and day属性 如何轻松获取 Date 对象 我希望有类似的事情params my date to date 我很高兴使用date
  • 如何释放 TInterfacedObject 中的 TObject 成员

    我知道接口对象是引用计数的 因此不需要手动释放它 但如果它有一个 TObject 继承成员 我是否应该在析构函数中手动释放该成员 考虑以下代码 program Project2 APPTYPE CONSOLE R res uses Syst
  • 如何将绑定字符串格式设置到所有 DataGridTextColumn 控件?

    这是我的 DataGridTextColumn 控件之一 如下所示
  • idleTimeout 和 ShutdownTimeout 之间的区别

    我正在尝试放宽网站的会话过期策略 以便用户可以指定会话超时间隔 我需要弄清楚应该指定哪些网站相关设置 以免过多限制用户 例如 可能需要 1 天的间隔 我将使用门票来实现这一点 现在 我知道我可以在网站的 web config 文件中指定id
  • JavaScript 数组和对象除了 .length 属性之外有什么区别?

    我认为 JS 数组只是一个哈希映射 它只接受整数值作为键 length 属性只返回最大索引 1 这是正确的吗 还有其他区别吗 您错了 数组可以有任何你想要的键 此外 他们还继承了Array原型
  • 直接选择排序与交换选择排序

    有什么区别直接选择排序 vs 交换选择排序 今天我陷入了一场争论 我的教授在他的讲义中使用了这两个术语 维基百科和任何教科书或网站都会为您提供的选择排序就是他所说的 交换选择排序 我以前从未听说过 交换选择排序 这个术语 仅 选择排序 并且
  • 如何在应用程序项目中使用 Cocoa Touch 框架

    我熟悉构建单个 iOS 应用程序 但我坚持使用 Cocoa Touch 框架向多个应用程序共享通用代码 问题 框架的头文件不可见 无法链接到消费应用程序项目 我做了什么 1 我创建了一个名为 libTestFramework 的项目 Coc
  • Powerquery:展开其中有记录的所有列

    使用 Microsoft Excel 2013 中的 Power Query 我创建了一个如下所示的表 To insert this in Power Query append a before the Table FromRows Tab
  • 证明 Excel VBA Scripting.Dictionary 不保留项目插入顺序

    我正在尝试决定是否为我的项目使用 Excel VBA 集合或字典 出于多种原因 我倾向于字典 但在使用字典时我会继续阅读它For Each循环检索字典项目或从字典 Items 数组读取项目时 检索顺序可能不是添加项目的顺序 这对于我的应用程
  • $().load() 不是加载整个页面,而是需要在所有页面上保留菜单

    我想使用 jQuery AJAX 重新加载我网站的内容区域 load 功能 但我的问题是header and footer无论您的入口 URL 为何 都需要在所有页面上显示 我的网站是使用模板构建的 所以我的第一个想法是删除独特内容上方和下
  • 在Python中循环命名元组的元素

    我有一个命名元组 我将值分配给这样的 class test object self CFTs collections namedtuple CFTs c4annual c4perren c3perren ntfixing self CFTs
  • 什么时候需要“typename”关键字? [复制]

    这个问题在这里已经有答案了 可能的重复 正式来说 typename 是做什么用的 https stackoverflow com questions 1600936 officially what is typename for 我必须在哪
  • 为每个因素级别添加日期时间序列

    我有一个带有因子列的数据框 s lt data frame id 901 910 s id lt as factor s id 我有一个日期时间序列 library lubridate start lt now as difftime 2
  • 如何使用gunicorn和bokeh服务配置Nginx

    我想提供一个 Flask 应用程序 该应用程序使用本地网络服务器上的嵌入式散景服务 为了说明这一点 我使用了一个例子散景服务示例 https github com bokeh bokeh blob 0 12 11 examples howt
  • 由于重复捕获组而不是捕获重复组,正则表达式不匹配

    我有以下正则表达式 A G A G 具有以下表达式 A BsCb 我期望 3 个匹配结果 A Bs Cb 但测试在https regex101 com https regex101 com 只给我最后一场比赛Cb 并告诉我重复捕获组只会捕获
  • 如何从@google-cloud/storage读取文件?

    我正在从我的存储桶中检索文件 我收到该文件并想要阅读其内容 但我不想将其下载到我的本地项目 我只想读取内容 获取数据并用它进行其他操作 我的代码 export const fileManager async gt try const sou