首页 > 解决方案 > 如何在节点中发出表单数据请求,从 s3 中提取文件

问题描述

在此处输入图像描述大家好,所以我试图在 nodejs 中提出这种类型的请求。我假设您可以使用 multer 来完成,但有一个主要问题我不想下载文件或从表单上传它我想直接从 s3 中提取它,获取对象并将其作为文件与其他数据到我的路线。有可能这样做吗?

标签: node.jsamazon-s3multer

解决方案


是的,这是完全可能的。假设您了解aws-sdk.

示例:(辅助方法)

    getDataFromS3(filename, bucket, callback) {

      var params = {
      Bucket: bucket, 
      Key: filename
     };

     s3.getObject(params, function(err, data) {
       if (err) {
           callback(true, err.stack); // an error occurred
       }
       else  {
          callback(false, data);     //success in retrieving data.
       }  
   });

 }

您的路线

app.post('/something', (req, res) => {
    var s3Object = getDataFromS3('filename', 'bucket', (err, file) => {
        if(err) {
            return res.json({ message: 'File retrieval failed' });
         }

        var routeProperties = {};
        routeProperties.file = file;
        routeProperties.someOtherdata = req.body.someOtherData;

        return res.json({routeProperties});
    });
});

当然,代码可能并不完全正确。但这是一种你可以用来得到你想要的东西的方法。希望这可以帮助。


推荐阅读