我有一个 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/