Django +龙卷风|图片上传

时间:2014-04-08 07:34:30

标签: django file-upload websocket tornado

我正在尝试创建类似网页的Facebook群组,其中人们可以在群组页面上发布任何文本或图像,并且订阅该页面的所有用户都将获得人们发布的文本和图像的实时馈送。

为了达到这个目的,我正在使用django + tornado集成,其中web页面由django呈现,所有异步请求都由tornado使用websockets处理。

所以, 在组页面上,我能够使用websockets实现从客户端到服务器的文本传输,并且所有用户都可以实时更新页面上发布的新文本。 现在,我想让人们也分享图像。

我不确定是否应该使用django(使用POST上传)或龙卷风(使用websockets)上传图片。在这种情况下,首选方式是什么?

2 个答案:

答案 0 :(得分:1)

提案: 用户将图像上传到django,django每次存储它并返回url。 然后,用户将此URL发送到websocket上,类似于文本帖。

答案 1 :(得分:1)

你应该使用Django进行图片上传,这样做非常有效。这是一个简单的图像上传模型。

from django.db import models

LEFT = "left"
RIGHT = "right"
FLOAT_CHOICES = ((LEFT, _("left")),
            (RIGHT, _("right")),
)

class Sample(CMSPlugin):

    float = models.CharField(_("Image placement"), max_length=10, blank=True, null=True,
        choices=FLOAT_CHOICES, help_text=_("Move image left, right or center."))
    image = models.ImageField(_("image"), upload_to=CMSPlugin.get_media_path)
    big_header  = models.TextField(_("Quotation"),null=True, max_length=150)
    name = models.CharField(_("Name of Recommending person"), max_length=150)
    detail = models.CharField(_("School detail"), max_length=200)

结合这些包含requirements.txt文件中的两个包:

 boto==2.7.0
 django-storages==1.1.6

这些库为将图像上传到S3(这是每个人都喜欢的媒体文件)提供了非常好的支持。成功上传图像后,它会返回一个图像路径,然后将其保存到数据库中。

要使用S3,请在settings.py或base.py中添加这些设置。

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'

AWS_STORAGE_BUCKET_NAME = '<s3-bucket-name>'
AWS_S3_SECURE_URLS = False
AWS_PRELOAD_METADATA = True
AWS_ACCESS_KEY_ID = os.environ['AWS_ACCESS_KEY_ID']
AWS_SECRET_ACCESS_KEY = os.environ['AWS_SECRET_ACCESS_KEY']