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 接收文件
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 接收文件的更多相关文章
- django设置并获取cookie/session,文件上传,ajax接收文件,post/get请求及跨域请求等的方法
django设置并获取cookie/session,文件上传,ajax接收文件等的方法: views.py文件: from django.shortcuts import render,HttpRes ...
- Python 一键上传下载&一键提交文件到SVN入基线工具
一键上传下载&一键提交文件到SVN入基线工具 by:授客 QQ:1033553122 实现功能 1 测试环境 1 使用说明 1 注: 根据我司项目规则订制的一套工具,集成以下功能,源码 ...
- 使用Python Requests上传表单数据和文件
在Python环境下写一个HTTP客户端,发送POST请求,同时上传表单数据和文件,我们可以使用Requests模块来实现.代码如下: data = { 'name': 'nginx' } files ...
- Python requests上传文件demo
#!/usr/bin/env python # -*- coding: utf-8 -*- import requests headers = {'uuid': '5cb572b7-c0a7-4d90 ...
- python requests 上传文件
token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjoiZWM2ZWFjZjFjM2UzYzEyOWU3ODA4YjgwNzkxNGI ...
- python requests 上传excel数据流
headers=self.headers #获取导入模版 file_home = self.import_template log.info(file_home) wb = load_workbook ...
- requests上传文件,又要上传data的处理
前话 最近在自己学着弄接口自动化框架,因为要封装一个发送请求的父类,其中有考虑到上传文件,以及同时上传文件,和传递其他字段数据,遇到点小问题 这里解决下. 实例的接口数据 参考文档 来自fastapi ...
- requests上传文件
""" requests上传文件时,如果文件名是中文,会导致上传失败,参考:https://www.cnblogs.com/liaofeifight/p/5807901. ...
- python+selenium上传文件——input标签
我们要区分出上传按钮的种类,大体上可以分为两种: 第一种普通上传:将本地文件路径作为一个值,放在input标签中,通过form表单将这个值提交给服务器: 第二种插件上传:是通过Flash.JavaSc ...
随机推荐
- 2018年尚硅谷《全套Java、Android、HTML5前端视频》
全套整合一个盘里:链接:https://pan.baidu.com/s/1nwnrWOp 密码:h4bw 如果分类里没有请下载下边那些小项教程链接 感谢尚硅谷提供的视频教程:http://www.at ...
- 【vue】vue +element 搭建项目,组件之间通信
父子组件通信 父 通过props属性给 子传递数据 子 操作 父 this.$parent.XXX 子通过$emit传递参数 或者通过vue-bus vue-bus既可以实现父子组件之间的通信,也可 ...
- Linux内核入门到放弃-进程管理和调度-《深入Linux内核架构》笔记
进程优先级 硬实时进程 软实时进程 普通进程 O(1)调度.完全公平调度器 抢占式多任务处理(preemptive multitasking):各个进程都分配到一定的时间段可以执行.时间段到期后,内核 ...
- luogu p1652 圆
题目部分 题目描述 给出N个圆,保证任意两个圆都相离,然后给出两个点(x1,y1).(x2,y2),保证均不在某个圆上,要从点(x1,y1)到(x2,y2)画条曲线,问这条曲线最少穿过多少次圆的边界? ...
- 1-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案数据篇(视频总揽和功能演示)
主要实现的功能 其它视频和资料稍候再补充上 我先写后面的文章 2-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案数据篇(安装数据库,数据库简单说明)
- JVM源码分析--ClassLoader类加载器
本人原创,转载请注明出处:https://www.cnblogs.com/javallh/p/10224187.html 1.JDK已有类加载器: BootStrap ClassLoader (启动类 ...
- .NET Core中复制源文件夹下的所有内容到新文件夹
.NET Core中没有原生的复制文件夹方法,我们可以自己写个: 新建一个.NET Core控制台项目,示例代码如下: using System; using System.IO; namespace ...
- 十二省联考题解 - JLOI2019 题解
十二省联考题解 - JLOI2019 题解 两个T3的难度较大 平均代码量远大于去年省选 套路题考查居多 A 难度等级 1 $n^2$暴力可以拿到$60$分的优秀成绩 然后可以想到把区间异或转化为前缀 ...
- Java 执行远程主机shell命令代码
pom文件: <dependency> <groupId>org.jvnet.hudson</groupId> <artifactId>ganymed- ...
- .Net高级进阶,教你如何构建企业模型数据拦截层,动态控制字段验证
现在,你有一个MVC架构的web项目,你要完成一个注册功能. 前台传了3个值到你的控制器,分别是账号.密码.邮箱. 如图:现在你要在控制器里面判断,账号名称.密码.邮箱不能为空,并且名称和密码不超过1 ...