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 ...
随机推荐
- 【vue】vue +element prop用法
简单demo 父组件:index.vue <template> <div class="app-container"> <vue-props-demo ...
- ubantu服务器配置ss
阿里云 ubantu16.0(自带pip) 服务端 $ apt-get install python-pip $ pip install shadowsocks $ vim /etc/shadowso ...
- 编写第一个 Shell 脚本
什么是 Shell 脚本? 一个 shell 脚本就是一个包含一系列命令的文件.shell 读取这个文件,然后执行 文件中的所有命令,就好像这些命令已经直接被输入到了命令行中一样. 怎样编写一个 Sh ...
- tomcat目录结构以及项目部署
摘要:tomcat的目录结构 tomcat是一个轻量级的免费开源的web服务器,使用非常方便,也是最普遍的一款优秀服务器. 一.tomcat目录结构 1.官方下载 http://tomcat.apa ...
- WPF---Binding学习(一)
转自:http://blog.csdn.net/lisenyang/article/details/18312199 1,Data Binding在WPF中的地位 程序的本质是数据+算法.数据会在存储 ...
- 完成了Coursera的一个机器学习课程
终于完成了这个课程,从开始学习,到现在差不多过了一年的时间,中间由于一些原因耽搁了,最终还是完成了,记录一下!
- Scala学习(八)练习
Scala中继承&练习 1. 扩展如下的BankAccount类,新类CheckingAccount对每次存款和取款都收取1美元的手续费 class BankAccount ( initial ...
- [Luogu4916]魔力环[Burnside引理、组合计数、容斥]
题意 题目链接 分析 sπo yyb 代码 #include<bits/stdc++.h> using namespace std; typedef long long LL; #defi ...
- 警告:Establishing SSL connection without server's identity verification is not recommended
SpringBoot启东时红色警告: Mon Jun 04 00:53:48 CST 2018 WARN: Establishing SSL connection without server's i ...
- Nginx+keepalived高可用配置实战(内附彩蛋)
1.整体架构图如下 2.环境准备 今天所配置的是keepalived+nginx 的负载均衡 下载keepalived软件 [root@LB01 tools]# wget http://www.kee ...