node.js - 从 Cloudinary 切换到 S3 - 无法上传

标签 node.js amazon-s3 cloudinary keystonejs

我有一个 KeystoneJS 项目将从 Cloudinary 切换到 S3。该项目与 Cloudinary 一起开箱即用。但是,我们希望迁移到使用 S3 进行存储。

我目前在我的 keystone.js 文件中设置了 S3:

var config = require('./config.json');

keystone.set('s3 config', { 
  bucket: config.s3.bucket, 
  key: config.s3.key, 
  secret: config.s3.secret 
});

我有另一个名为 Page 的模型,我想用它上传图像。有一个名为 heroImage 的字段,以前是一个简单的 { type: Types.Cloudinary }

但是,为了让它使用 S3,我必须将其更改为:

heroImage: {
  type: Types.S3File,
  format: function(item, file) {
    return '<img src="' + file.url + '" style="max-width: 300px">';
  }
}

进入AdminUI时,一切看起来都很好。我可以单击上传文件,然后按保存后,我收到一条成功消息。我使用 Transmit 检查了 S3 存储桶,发现该文件从未上传。此外,转到文件 URL 会显示以下内容:

<Error>
<Code>PermanentRedirect</Code>
<Message>
The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
</Message>
<Bucket>MY_BUCKET</Bucket>
<Endpoint>MY_BUCKET.s3.amazonaws.com</Endpoint>
<RequestId>5CBD0F317C517254</RequestId>
<HostId>
VCoEc5PFevAecvyYC79ta7CIzWBewQ90kribJ59NAQ5JHn8dNEwMV+Ncv9cSfT1l
</HostId>
</Error>

任何将其从 Cloudinary 切换到 S3 的帮助将不胜感激。

最佳答案

我只需从 S3 存储桶名称中删除任何 . 即可。例如,我只是将其重命名为 bucketnamecms,而不是 bucketname.com

关于node.js - 从 Cloudinary 切换到 S3 - 无法上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28201408/

相关文章:

node.js - 如何以文本形式发送变量?

c# - 亚马逊 S3.NET : Upload base64 image data?

amazon-web-services - CloudFormation、Lambda、S3 - 访问被 s3 拒绝

javascript - 将图像文件传递给 AWS lambda

javascript - 让 Cloudinary 直接上传以使用嵌套模型和动态添加的上传字段

node.js - 如何在 node.js 中重用 mongodb 连接

node.js - 是否可以使用通用调试器(gdb、lldb 等)在 Electron 应用程序中调试 Node c++ 插件?

jquery-plugins - 如何使用 Cloudinary jQuery 插件直接从页面上传图像?

javascript - 如何使用 Cloudinary Javascript API 处理错误?

javascript - Electron js应用程序构建后无法正常工作