2014-04-08 77 views
1

我正在尝试创建Facebook群组,如网页,其中人们可以在群组页面上发布任何文本或图像,订阅该页面的所有用户都可以实时获得人们发布的文本和图像。Django +龙卷风|图片上传

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

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

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

+0

难道你得到的答案,我要上传图片与tornado.IS​​它好主意,做此要求..? – Shiva

+0

我没有得到答案,但我现在正在使用Django进行上传。 – g4ur4v

+0

你可以请张贴那个例子或邮件吗? – Shiva

回答

1

提案: 用户将图像上传到django,每当django存储图像并将网址返回给它。 用户然后通过websocket发送这个URL,类似于文本文章。

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']