【问题标题】:Django not uploading image files to Azure storage containerDjango 未将图像文件上传到 Azure 存储容器
【发布时间】:2015-06-23 23:08:30
【问题描述】:

如何将我的 Azure blob 存储链接到我的 Django 管理员,以便它在保存新记录时将文件上传到 blob 存储帐户。

我已经在管理员中设置了图片上传。在我单击保存之前,管理界面就像附加了图像一样,尽管我知道图像文件实际上并没有存储在我的 SQLite3 数据库中

当图像手动上传到 Azure blob 存储帐户时,我可以在我的项目面向消费者的部分成功引用它们。出于显而易见的原因,我不想每次都手动上传它们。

必须有一个简单的解决方案,我只是没有成功研究它。提前致谢!

models.py

class Image(models.Model):
    file = models.ImageField(upload_to='img/')

    def __unicode__(self):
        return u'%s' % self.file 

class Product(models.Model):
...
    picture = models.ManyToManyField(Image)
...

settings.py

MEDIA_ROOT = path.join(PROJECT_ROOT, 'media').replace('\\', '/')

MEDIA_URL = 'https://my_site.blob.core.windows.net/'

使用 Django 1.7、Python 2.7、SQLite3

【问题讨论】:

    标签: python django azure sqlite


    【解决方案1】:

    Django-storages 支持 Azure blob 后端,它允许您上传的任何内容自动存储在您的存储容器中。

    http://django-storages.readthedocs.org/en/latest/backends/azure.html

    【讨论】:

    • 谢谢,这正是我需要的解决方案!
    • 开个玩笑,它不断将文件上传为 application/octet-stream
    【解决方案2】:

    我不知道有任何内置的 Django API 允许我们更改 blob 的内容类型。但根据我的经验,您可以使用 Azure SDK for Python 上传 Blob:https://github.com/Azure/azure-sdk-for-python。在您的情况下,最重要的设置是内容类型。默认情况下,内容类型是 application/octet-stream。但是,您可以通过 x_ms_blob_content_type 更改它。请参考https://azure.microsoft.com/en-us/documentation/articles/storage-python-how-to-use-blob-storage/ 获取示例,如果您有任何进一步的疑虑,请随时告诉我们。

    【讨论】:

      【解决方案3】:

      我的配置

      # Media
      MEDIA_ROOT = '/home/<user>/media/'
      MEDIA_URL = '/media/'
      

      记住文件夹需要权限(写,读)apache用户 示例:

      <img src="/media/img/my_image.png">
      

      <img src="{{obj.file.url}}">
      

      【讨论】:

        猜你喜欢
        • 2019-07-10
        • 2018-10-31
        • 1970-01-01
        • 2013-07-29
        • 2018-12-17
        • 1970-01-01
        • 2017-03-11
        • 2016-03-09
        • 1970-01-01
        相关资源
        最近更新 更多