我开发了一个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/'