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