从Cloudinary切换到S3 - 无法上传

时间:2015-01-28 20:07:21

标签: 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时,一切都很好。我可以点击Upload File,按Save后,我收到了成功消息。我用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的帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

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