【问题标题】:NodeJS - Upload to s3 without saving in local file systemNodeJS - 上传到 s3 而不保存在本地文件系统中
【发布时间】:2018-06-30 00:32:12
【问题描述】:

我从 REST API 中的 POST 响应中接收到一些文本。为此,我想直接在 s3 中创建一个文本文件。我偶然发现的所有示例都是使用本地文件然后上传。有没有办法直接上传而不保存在本地系统中?

【问题讨论】:

  • 我猜你可以直接将它通过管道传递给 s3.putobject
  • 或者更确切地说,s3.upload

标签: node.js rest amazon-web-services amazon-s3


【解决方案1】:

您可以直接将 req 传递给 s3.upload 函数,如下所示

import express from 'express';

import {S3} from 'aws-sdk';

const s3 = new S3();
const app = express();

app.post('/data', async (req, res) => {
    var params = {
        Body: req,
        Bucket: "yourbucketname here",
        Key: "exampleobject",
    };
    s3.upload(params, async (err, data) => {
        if(err)
            log.info(err);
        else
            log.info("success");
    });
});
const server = app.listen(8081,async () => log.info("App listening") )

发布的文件将直接上传到 aws s3。

【讨论】:

  • 不,我没有在任何地方使用 bodyparser
  • 有趣。 upload() 方法要求 Body 的类型为 Buffer、Typed Array、Blob、String 或 ReadableStream。 Express 请求对象如何等同于其中之一?
  • req 是一个流
  • 谢谢,感谢您的解释。我阅读了 Express 路由 API 文档,它似乎没有在任何地方解释“req”是什么类型,也没有表明它是或以某种方式实现了可读流。
  • 试试这个。将您的请求通过管道传输到路由中的 process.stdout。 req.pipe(process.stdout)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-30
  • 2010-09-20
相关资源
最近更新 更多