我正在尝试上传一个图像,我有一个到s3的url
我想执行相同操作,但不将映像下载到本地存储
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>' }
3条答案
按热度按时间xfb7svmp1#
有两种方法可以将文件放入Amazon S3存储桶:
*通过
PutObject()
* 或上传**内容*复制Amazon S3中已有的对象
因此,对于“可通过网络访问的Cloudinary映像”,需要先检索,然后再上传。您可以完全下载映像,然后再上传,也可以使用流媒体来做一些花哨的事情,将源映像读入缓冲区,然后写入S3。无论哪种方式,都需要从Cloudinary“读取”文件,然后“写入”S3。
至于“Web可访问的Amazon S3链接”,您可以使用
CopyObject()
命令来指示S3直接将对象从源存储桶复制到目的存储桶(它也可以在存储桶内工作)。pieyvz9o2#
这将向图像URL发出GET请求,并将响应直接通过管道传输到S3上载流,而无需将图像保存到本地文件系统。
zwghvu4y3#
您可以使用以下代码段,通过文件URL在S3中上传文件。