首先,您尝试在代码中使用的 url 是这样的:
http://s3.amazonaws.com/hiphotos/ads/photos/000/000/015/original/test_tree.jpg
当您在浏览器中访问该链接时,您会看到以下内容:
<message>
The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
</Message>
<RequestId>810A6AE1D141304C</RequestId>
<Bucket>hiphotos</Bucket>
<HostId>
XXZ+s+slgZLsRWy5NiU/G0yAKBLftw0oT2dDKpas532qXJEPSrISVPqfZsEgpb2J
</HostId>
<Endpoint>hiphotos.s3.amazonaws.com</Endpoint>
因此,如果我们使用正确的端点修改 url,我们会得到:
http://hiphotos.s3.amazonaws.com/ads/photos/000/000/015/original/test_tree.jpg
哪个确实返回正确的图像。
如果您使用的是欧洲存储桶,则可能会发生这种情况,这可能是您用来将内容推送到 s3 的 gem 的错误。
有很多文章介绍了如何让 Paperclip、S3 和欧洲水桶很好地协同工作。
不过我发现,自从我开始使用使用 Fog 而不是 aws-s3 gem 的asset_sync gem 以来,我对回形针和 S3 不再有任何麻烦。
所以我怀疑雾与让这个问题对我消失有关。如果您正在使用其他东西,我建议您切换到它。