将图片从网址上传到s3

时间:2019-09-04 13:48:35

标签: node.js amazon-web-services amazon-s3 aws-sdk

我正在尝试上传图片,对此我有一个s3的网址

我想做同样的事情而不将图像下载到本地存储中

filePath = imageURL;
          let params = {
            Bucket: 'bucketname',
            Body: fs.createReadStream(filePath),
            Key: "folder/" + id + "originalImage"
          };
          s3.upload(params, function (err, data) {
            if (err) console.log(err);
            if (data) console.log("original image success");
          });

期望成功,但会出错: myURL是https可以公开访问的网址。

[Error: ENOENT: no such file or directory, open '<myURL HERE>']
  errno: -2,
  code: 'ENOENT',
  syscall: 'open',
  path:
   '<myURL HERE>' }

1 个答案:

答案 0 :(得分:0)

有两种方法将文件放入Amazon S3存储桶:

    通过PutObject()
  • 上传内容
  • 复制一个Amazon S3中已经存在的对象

因此,对于您的“可通过网络访问的Cloudinary映像”,将需要对其进行检索,然后将其上传。您可以完全下载图像然后上载它,也可以对流式处理主体进行一些幻想,将源图像读入缓冲区然后写入S3。无论哪种方式,都需要从Cloudinary中“读取”文件并将其“写入”到S3。

对于“可访问Web的Amazon S3链接”,您可以使用CopyObject()命令指示S3将对象直接从源存储桶复制到目标存储桶。 (它在 桶中也可以使用。)