将图像从 url 上传到 s3

Upload image to s3 from url

我正在尝试上传一张图片,为此我有一个 url 到 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 url。

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

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

  • 通过PutObject()
  • 上传内容
  • 复制 Amazon S3 中已有的对象

因此,对于您的 "web accessible Cloudinary image",需要先检索,然后再上传。您可以完全下载图像然后上传它,或者您可以使用流主体做一些奇特的事情,其中​​源图像被读入缓冲区然后写入 S3。无论哪种方式,文件都需要 "read" 从 Cloudinary "written" 到 S3。

至于"web accessible Amazon S3 link",您可以使用CopyObject()命令指示S3直接将对象从源存储桶复制到目标存储桶。 (它也可以在 个存储桶内使用。)