V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
p8p8
V2EX  ›  Python

APP 上传图片到我们的 python 后台,后台该如何接收啊

  •  
  •   p8p8 · 2014-11-05 16:38:44 +08:00 · 8743 次点击
    这是一个创建于 3460 天前的主题,其中的信息可能已经有所发展或是发生改变。
    APP客户端上传图片到后台服务器(tornado),后台该如何接收啊?

    谢谢各位!
    6 条回复    2014-11-21 02:05:46 +08:00
    hisokc
        1
    hisokc  
       2014-11-05 17:42:56 +08:00
    app 那边图片内容转二进制,服务器端接收反转一下 将内容存成图片格式即可
    shajiquan
        2
    shajiquan  
       2014-11-05 17:47:58 +08:00   ❤️ 1
    1. APP 和 SERVER 相约一个编码方式。
    2. APP 将图片编码,以数据流方式 POST 给 SERVER。
    3. SERVER 将收到的文件解码,保存成文件。

    如果这个接口只接受一个参数(也就是文件内容)的话,tornado 用 self.request.body 取出文件内容就好了。

    另外建议把上传接口放在另外的服务器上处理,否则小心卡死。

    或者,可以考虑使用七牛等云存储, 这样的话,APP 向 SERVER 请求向七牛上传文件所必须的 AUTH KEY,然后 APP 自己利用用户的网络上传图片到七牛,然后得到 filename 或者 file url,然后再进行后续操作。

    这样做的好处是,不占用服务器带宽,不过分耗用服务器性能(文件读写)。
    openroc
        3
    openroc  
       2014-11-06 10:54:12 +08:00   ❤️ 1
    用torndo接收,会block进程,降低并发,最好使用nginx,接收upload。 :)
    p8p8
        4
    p8p8  
    OP
       2014-11-11 19:59:47 +08:00
    @openroc 如何用nginx做upload接收啊,我试了一下,的确会block进程。延迟超过4000ms
    openroc
        5
    openroc  
       2014-11-12 07:40:15 +08:00
    @p8p8 google一下,很多:)
    p8p8
        6
    p8p8  
    OP
       2014-11-21 02:05:46 +08:00
    @shajiquan

    另外建议把上传接口放在另外的服务器上处理,否则小心卡死。

    你提到的这点,我觉得比较合适,但是我这里有几个疑问,继续向你请教一下。

    如果我把上传接口放在另外一台服务器上处理的话,另外一台就不用tornado做了是吧(否则另外一台不也会卡死么。),例如就用Flask?或者你有什么推荐的吗?

    还有一个问题是,如果我把上传接口放在另外一台服务器上处理的话,那这个用户上传权限如何去做处理啊???这里可能是我思路没想通,难道要用单点登录?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5442 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 08:51 · PVG 16:51 · LAX 01:51 · JFK 04:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.