python requests上传文件 tornado 接收文件


requests 上传文件

import requests

def images():
    url = 'http://127.0.0.1:8889/upload/image' 
    files = {'file': open('desktop.png', 'rb')}
    multiple_files = [
(
'file', ('11.png', open('11.png', 'rb'), 'image/png')),
(
'file', ('desktop.png', open('desktop.png', 'rb'), 'image/png'))
] headers
= {'Api-Key': 'InhpeWFuZzA4MDdJBtx4AWlPpI_Oxx1Ki8', 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36'
} r = requests.post(url, files=multiple_files, headers=headers) # 上传图片 r = requests.post(url, files=files, headers=headers) # 上传文件 print(r.text)


tornado 接收文件

#!/usr/bin/env python
# Copyright 2009 Facebook
#

import tornado.httpserver
import tornado.ioloop import tornado.options import tornado.web import logging import sys import setting

class UploadImageHandler(BaseHandler):
def set_default_headers(self): print "setting headers!!!" self.set_header("Access-Control-Allow-Origin", "*") self.set_header("Access-Control-Allow-Headers", "x-requested-with") self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS') def options(self): pass

    def get(self): self.write('please upload a image url') def post(self): result = {} result['flag'] = 0 result['data'] = '' result['msg'] = ''
        try: is_admin = self.get_body_argument('is_admin', None) meta = self.request.files['file'][0] suffix = meta['filename'].split('.')[-1] fullname, arr, filename = self.get_full_file_name('image', suffix) while os.path.exists(fullname): logging.info('已经存在文件:' + fullname) fullname, arr, filename = self.get_full_file_name('image', suffix) f = open(fullname, 'wb') f.write(meta['body']) f.close() result['data'] = setting.openHost+'/'+arr[0]+'/'+arr[1]+'/'+arr[2]+'/'+arr[3]+'/' + filename result['flag'] = 1
        except Exception, e: logging.info('Error: upload image failing,%s' % str(e)) result['flag'] = 0 result['msg'] = 'fail in upload image' self.write(simplejson.dumps(result)) return self.set_header("Access-Control-Allow-Origin", "*") self.write(simplejson.dumps(result))


class Application(tornado.web.Application): def __init__(self): self.session = memcache.Client([setting.memcache_host]) handlers = [ (r"/upload/image", UploadImageHandler) tornado.web.url(r".*", tornado.web.StaticFileHandler, dict(path=setting.imgDir), name='static_path') ] tornado.web.Application.__init__(self, handlers) if __name__ == "__main__": tornado.options.parse_command_line() application = Application() http_server = tornado.httpserver.HTTPServer(application, xheaders=True) port = 8889 if len(sys.argv) > 1: port = int(sys.argv[1]) http_server.listen(port) loop = tornado.ioloop.IOLoop.instance() logging.info('File Server running on http://127.0.0.1:%d' % port) loop.start()

 settin.py

#!/usr/bin/env python
# coding=utf8
# file=setting.py

imgDir = "/imgData/"  # 图片文件保存地址
openHost = "http://img.520czj.com"  # 图片服务器的访问基URL
serverName = 'server1'  # 保存在该图片服务器中文件的命名前缀,用于反向代理时快速定位图片所在服务器,如果禁用一台服务器,该字段无实际意义
memcache_host = '127.0.0.1:11211'
domanName = 'http://admin.520czj.com'

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM