使用带有S3boto后端的django-storages保存到S3时,如何设置"Content-Type"?

awi*_*ery 13 django amazon-s3 boto django-storage

我使用django-storagess3boto作为后端.

我有一个带有两个文件夹的存储桶 - 一个用于static,一个用于media.我用它来实现这一点django-s3-folder-storage.

除了使用模型保存到S3之外,我还想实现图像调整大小和缓存功能以将文件保存到S3.为此,我直接与我的S3存储桶进行交互.代码有效,但未Content-Type在S3上设置.

在iPython中:

In [2]: from s3_folder_storage.s3 import DefaultStorage

In [3]: s3media = DefaultStorage()

In [4]: s3media
Out[4]: <s3_folder_storage.s3.DefaultStorage at 0x4788780>
Run Code Online (Sandbox Code Playgroud)

测试我们正在访问正确的存储桶 - storage_test我之前创建的是:

In [5]: s3media.exists('storage_test')
Out[5]: True

In [6]: s3media.open("test.txt", "w")
Out[6]: <S3BotoStorageFile: test.txt>

In [7]: test = s3media.open("test.txt", "w")

In [8]: test
Out[8]: <S3BotoStorageFile: test.txt>

In [9]: test.key.content_type = "text/plain"

In [10]: test.write("...")

In [11]: test.close()

In [12]: test = s3media.open("test.txt", "w")

In [13]: test.key.content_type
Out[13]: 'binary/octet-stream'
Run Code Online (Sandbox Code Playgroud)

我也试过而不是In [9]使用test.key.metadatatest.key.set_metadata.他们都不这样做.

如何设置正确的内容类型?

Mon*_*ngo 1

根据这个答案,内容类型不是元数据,而是您上传文件时设置的标头。