如何将内存中的multer文件缓冲区上传到google云存储桶?

2024-04-03

我使用 multer 和 nodejs 来处理多部分表单数据。我不想保存从客户端获得的 req.file 。我想直接将内存中的文件缓冲区上传到谷歌云存储...

但是存储桶(firebase storage)的上传方法只需要一个文件路径作为参数。有什么方法可以直接实现这一点而不保存文件并将内存中的文件缓冲区直接上传到firebase存储?

如果是这样,该怎么办?


解决方案就在 Nodejs 云存储入门指南中。

function sendUploadToGCS (req, res, next) {
  if (!req.file) {
    return next();
  }

  const gcsname = Date.now() + req.file.originalname;
  const file = bucket.file(gcsname);

  const stream = file.createWriteStream({
    metadata: {
      contentType: req.file.mimetype
    },
    resumable: false
  });

  stream.on('error', (err) => {
    req.file.cloudStorageError = err;
    next(err);
  });

  stream.on('finish', () => {
    req.file.cloudStorageObject = gcsname;
    file.makePublic().then(() => {
      req.file.cloudStoragePublicUrl = getPublicUrl(gcsname);
      next();
    });
  });

  stream.end(req.file.buffer);
}

参考:https://cloud.google.com/nodejs/getting-started/using-cloud-storage https://cloud.google.com/nodejs/getting-started/using-cloud-storage

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将内存中的multer文件缓冲区上传到google云存储桶? 的相关文章

随机推荐

  • 并发写入文件

    在go中 如何控制对文本文件的并发写入 我问这个问题是因为我将有多个 goroutine 使用相同的文件处理程序写入文本文件 我写了这段代码来尝试看看会发生什么 但我不确定我是否做得 正确 package main import os sy
  • iOS 中隐式动画具体什么时候发生?

    每个人和每本书都声称 CALayer 中存在隐式动画 然而 到目前为止 每次我想验证这一点时 我都会以硬性捕捉到设定值告终 根本没有动画 这是一个项目中没有发生任何其他事情的示例 我所做的就是创建一个视图 然后获取它的 CALayer 实例
  • 按照 Matlab 中出现的顺序读取文件夹中的所有文本文件

    我目前有 20 个文本文件 命名从 file1 到 file20 我正在使用 matlab 将它们读入 filePattern fullfile myFolder txt dataFiles dir filePattern for k 1
  • 使用 Typescript 在 Material-UI 中的 createMuiTheme 中向背景属性添加属性

    我正在尝试在 createMuiTheme 中添加一个新属性 但 Typescript 不让我这样做 我按照这里的说明进行操作 https next material ui com guides typescript customizati
  • 使用 Google reCaptcha 总是显示“in Correct-captcha-sol”

    我正在尝试在我的网站上使用 Google reCaptcha 在学习了几个教程后 我在 HTML 页面上使用如下 section class row div class col full div section
  • 如何将 @JsonSnakeCase 设置为 Dropwizard 中的默认配置

    我将如何配置 Jackson 在 dropwizard 中使用蛇形案例 而不是将 JsonSnakeCase 放在每个类中 最后我能够找到答案 只需添加以下配置 environment getObjectMapperFactory setP
  • 如何使用 Swift 刷新我的应用程序中的 Google 地图?

    我制作了一个选项卡栏应用程序 其中一个选项卡 MapTab 由 GoogleMap 组成 而另一个选项卡 ImageTab 则保存所有图像 现在 当图像保存在 ImageTab 中时 它会以标记的形式显示在 MapTab 上 现在我的问题是
  • NumPy 中的 ndarray 和 array 有什么区别?

    有什么区别ndarray https numpy org doc stable reference generated numpy ndarray html and array https numpy org doc stable refe
  • Xamarin 方向传感器矢量角

    我在用着Xamarin Essentials OrientationSensor在我的项目中 我无法解释QuaternionAPI 为我提供了新的读物 问题描述 Here s a figure describing my problem 我
  • 在 Ubuntu 11.04 中禁用堆栈崩溃保护

    我在 2007 年 MacBook 上运行 32 位 Ubuntu 11 04 并且刚刚开始了解缓冲区溢出漏洞 我正在尝试运行书中的示例程序 但 Ubuntu 的安全措施使我无法成功执行缓冲区溢出 这是我尝试运行的代码 include
  • Flutter - 删除滑块中的默认填充

    我想知道如何删除默认填充Flutter Slider 电流输出是这样的 默认填充滑块的形状清晰可见 这是我的代码 Positioned child Align alignment Alignment bottomLeft child Sli
  • PyCharm 5 找不到 Django 1.9 模板

    当我使用 PyCharm 5 0 3 调试我的应用程序时 我想在模板文件 Django 1 9 中插入一些断点 但是 当我在 PyCharm 调试模式下运行应用程序时 它会在处理第一个请求后立即打印以下警告 警告 模板路径不可用 请在 se
  • Linq:存储为文本时按日期排序

    我需要按日期排序 但日期以文本形式存储在数据库中 我正在使用 Linq to 实体来执行查询 根据数据库的设计方式 将该列更改为日期列是不可行的 因为该列中有许多不同的数据类型 有一个名为的鉴别器列type所以我会知道特定行是什么类型 您可
  • 使用WebSocket上传大文件

    我正在尝试使用 WebSocket API 上传大文件 至少 500MB 最好达到几 GB 问题是我不知道如何编写 发送文件的这一部分 释放所使用的资源 然后重复 我希望我可以避免使用 Flash Silverlight 之类的东西 目前
  • 在新列中获取具有相似地址的 id

    我有一个数据帧 我从中处理一些列 以获取每个客户 ID 的地址与每个其他客户 ID 的地址的匹配百分比 如果某些地址与其他地址的匹配百分比高于 80 那么我想在新列中收集其相应的客户 ID 我编写了代码 在其中获取元组列表 其中每个元组中都
  • $root 和 $parent 有什么区别?

    我正在学习 KnockoutJS 但我不明白两者之间的区别 root and parent用法 请参见这个jsfiddle http jsfiddle net supercool 2gt4K 27 或下面的代码 div data Value
  • 在家学习共享点[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有没有可以安装并用于家庭学习目的的 sharepoint 家庭 版本 Thanks Microsoft 预配置的 Sharepoint 2007 安装
  • 模拟实体框架核心上下文

    我尝试测试我的应用程序 因此我需要模拟我的 EF 上下文 我的代码似乎没问题 但有以下异常 System ArgumentNullException 值不能为空 参数名称 来源 这是我的测试方法 var options new DbCont
  • python re.sub,仅替换部分匹配[重复]

    这个问题在这里已经有答案了 我对 python 很陌生 我需要通过一个正则表达式匹配所有情况并进行替换 这是一个示例子字符串 gt 期望的结果
  • 如何将内存中的multer文件缓冲区上传到google云存储桶?

    我使用 multer 和 nodejs 来处理多部分表单数据 我不想保存从客户端获得的 req file 我想直接将内存中的文件缓冲区上传到谷歌云存储 但是存储桶 firebase storage 的上传方法只需要一个文件路径作为参数 有什