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'

python requests上传文件 tornado 接收文件的更多相关文章

  1. django设置并获取cookie/session,文件上传,ajax接收文件,post/get请求及跨域请求等的方法

    django设置并获取cookie/session,文件上传,ajax接收文件等的方法: views.py文件: from django.shortcuts import render,HttpRes ...

  2. Python 一键上传下载&一键提交文件到SVN入基线工具

    一键上传下载&一键提交文件到SVN入基线工具   by:授客 QQ:1033553122 实现功能 1 测试环境 1 使用说明 1   注: 根据我司项目规则订制的一套工具,集成以下功能,源码 ...

  3. 使用Python Requests上传表单数据和文件

    在Python环境下写一个HTTP客户端,发送POST请求,同时上传表单数据和文件,我们可以使用Requests模块来实现.代码如下: data = { 'name': 'nginx' } files ...

  4. Python requests上传文件demo

    #!/usr/bin/env python # -*- coding: utf-8 -*- import requests headers = {'uuid': '5cb572b7-c0a7-4d90 ...

  5. python requests 上传文件

    token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjoiZWM2ZWFjZjFjM2UzYzEyOWU3ODA4YjgwNzkxNGI ...

  6. python requests 上传excel数据流

    headers=self.headers #获取导入模版 file_home = self.import_template log.info(file_home) wb = load_workbook ...

  7. requests上传文件,又要上传data的处理

    前话 最近在自己学着弄接口自动化框架,因为要封装一个发送请求的父类,其中有考虑到上传文件,以及同时上传文件,和传递其他字段数据,遇到点小问题 这里解决下. 实例的接口数据 参考文档 来自fastapi ...

  8. requests上传文件

    """ requests上传文件时,如果文件名是中文,会导致上传失败,参考:https://www.cnblogs.com/liaofeifight/p/5807901. ...

  9. python+selenium上传文件——input标签

    我们要区分出上传按钮的种类,大体上可以分为两种: 第一种普通上传:将本地文件路径作为一个值,放在input标签中,通过form表单将这个值提交给服务器: 第二种插件上传:是通过Flash.JavaSc ...

随机推荐

  1. docker 7 docker的帮助命令

    docker的帮助命令 [root@t-docker chenzx]# docker info [root@t-docker chenzx]# docker version [root@t-docke ...

  2. GDB 命令回顾

    0) 为使用 GDB, 编译时需要加入调试信息 -g 选项,例如, $ gcc -g test.c -o test 1) 使用 GDB 开始调试 $ gdb test 也可以, $ gdb $ fil ...

  3. 环境变量配置的作用和区别:Path、Classpath、JAVA_HOME

    环境变量配置的作用和区别:Path.Classpath.JAVA_HOME 一个是零时配置,另一个是永久性配置. 零时配置的方法: 打开cmd窗口——>输入set命令,回车——>输入set ...

  4. 通过随机数获得学生成绩,并把每个元素赋值为学生的分数成绩,通过增强for循环遍历结果。

    package com.Summer_0419.cn; /** * @author Summer * 通过随机数获得学生成绩,并把每个元素赋值为学生的分数成绩 */ public class Test ...

  5. c++面经积累<1>

    引用和指针 指针是一个实体,需要分配内存空间,而引用只是一个别名,不需要分配内存空间 指针可以有多级,而引用只能有一级. 指针和引用的自增运算不一样,指针是指向下一个空间,而引用是引用的变量值增加 s ...

  6. Spark笔记-repartition和coalesce

    窄依赖.宽依赖以及stage的划分依据:https://www.cnblogs.com/itboys/p/6673046.html 参考: http://blog.csdn.net/u01268493 ...

  7. Unity编辑器:基于NGUI的引用检测工具

    这里共享一个基于NGUI的引用检测工具.工具包括几个部分:Atlas/Sprite的引用查找:字库引用查找:UITexture引用查找:Component查找: 代码就不多介绍了,文章底部提供源码下载 ...

  8. Rollup处理并打包JS文件项目实例

    关于Rollup rollup是一款用来es6模块打包代码的构建工具(支持css和js打包).当我们使用ES6模块编写应用或者库时,它可以打包成一个单独文件提供浏览器和Node.js来使用. 它的优点 ...

  9. Ubuntu Server 18.04 修改网路配置

    新的Ubuntu 服务器采用netplan管理网络配置,跟以前的配置有很大的区别. 实际可行的办法是修改/etc/netplan/01-netcfg.yaml文件: sudo vim /etc/net ...

  10. Python学习第四篇——列表访问与判定

    avilable_foods=["soup","beaf","noddle","pepper"] request_foo ...