gpt4 book ai didi

django - 带有 Amazon s3 的 Django Sorl 缩略图的 URL 错误

转载 作者:行者123 更新时间:2023-12-04 01:26:50 26 4
gpt4 key购买 nike

我在使用 S3 处理媒体文件的 django 项目中使用 sorl 缩略图时遇到了一个非常奇怪的错误。我已经完成了我在这个答案中指出的设置 https://stackoverflow.com/a/12848650/538191事实上,我所有的其他媒体文件都是正确生成的。

但是对于通过 sorl 缩略图生成的图像,我得到了这样的 url

https://he-s3.s3.amazonaws.com/cache/6f/cb/6fcb83175cb63f754fba9facec5dda7f.jpg?Signature=tgDEXyRV3gl3QtK%2BvwliqAtWqpM%3D&Expires=1357853609&AWSAccessKeyId=AKIAJLE6MUHDYS3HN6YQ

这个问题很奇怪,因为它将 S3 存储路径附加到图像 url,但它没有在中间添加/media/。如果你检查

https://he-s3.s3.amazonaws.com/media/cache/6f/cb/6fcb83175cb63f754fba9facec5dda7f.jpg

该图像实际上存在于那里,但由于 url 生成错误,我得到了一个损坏的图像。在设置文件中,我使用 s3boto 声明了 DEFAULT_FILE_STORAGE 并且它包含

S3_URL = 'http://he-s3.s3-website-ap-southeast-1.amazonaws.com'
MEDIA_URL = S3_URL + '/media/'

我不明白为什么 sorl 缩略图中的路径不包含媒体。

任何帮助表示赞赏。

更新

事实上,问题不但没有得到解决,反而变得更加复杂。我所做的是我在缩略图中清除了 KVStore 并清除了所有数据库。我很高兴,因为我认为问题已经解决了,我现在得到了正确的 url。但后来我刷新了页面,我又得到了错误的网址。我不明白发生了什么,如果我清除缩略图数据库,它会显示一次正确的网址,然后再次显示错误的网址。

最佳答案

我敢打赌你正在使用这样的东西:

MediaS3BotoStorage = lambda: S3BotoStorage(location='media')

然而,这会导致 sorl-thumbnail 出现问题,因为它使用类名将存储类序列化到缓存中。稍后当它反序列化时,它会实例化为 S3BotoStorage() 而不带位置参数。这就是为什么它第一次对你有效,但后来又失败了。

您可以使用成熟的类而不是工厂来修复它:
class MediaS3BotoStorage(S3BotoStorage):
location = 'media'

希望有帮助!

关于django - 带有 Amazon s3 的 Django Sorl 缩略图的 URL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14266950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com