带有django存储的自定义S3Boto3存储



我开发了一个Django应用程序,我使用VM的磁盘来保存和提供媒体和静态文件,但在我的一个模型中,我想将文件保存在连接到我的MinIO对象存储的FileField中。我在settings.py中设置了这样的设置

AWS_ACCESS_KEY_ID = '###'
AWS_SECRET_ACCESS_KEY = '###'
AWS_S3_ENDPOINT_URL = '###'

在我的模型中,我使用了这样的S3Storage:

class CustomStorageBucket(S3Boto3Storage):
bucket_name = "files"
class Document(BaseModel):
document_file = models.ImageField(storage=CustomStorageBucket(),upload_to='documents')

使用这些代码,我可以将我的文件保存到存储器中,但管理面板中的URL无法正常工作,因为它指向媒体文件的URL,类似于以下内容:

http://localhost:8000/media/documents/file.jpg

但我希望它是这样的(预签名的URL(:

https://object-storage.app/files/documents/file.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XXX&X-Amz-Date=XXX&X-Amz-Expires=432000&X-Amz-SignedHeaders=host&X-Amz-Signature=XXX

尝试设置MEDIA_URL变量

MEDIA_URL = 'https://object-storage.app/files/'

最新更新