繁体   English   中英

Django未将图像文件上传到Azure存储容器

[英]Django not uploading image files to Azure storage container

如何将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

Django-storages支持Azure blob后端,这将使您所做的任何上载都自动存储在存储容器中。

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

我的配置

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

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

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

要么

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

我不知道任何允许我们更改Blob内容类型的内置Django API。 但是根据我的经验,您可以使用适用于Python的Azure SDK来上传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/以获取示例,如果您还有其他疑问 ,请随时告诉我们。关注。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM