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 ...
随机推荐
- 【css】常用css
常用css--------下三角 常用css--------闪动效果 css #shandongFlash { width:100px; height:100px; background:#f8b55 ...
- 好程序员分享Javascript设计模式
方法一 对象字面量表示法 在对象字面量表示法中,一个对象被描述为一组包含在大括号中,以逗号分隔的 name/value 对.对象内的名称可以是字符串或标识符,后面跟着一个冒号.对象中最后一个 name ...
- matlab 整局-部视知觉实验(读取excel点阵设计图替换数据)
-------给我那编程盲的女盆友,我怎么感觉是我选了一门课???做了这么多次作业,还是整理出来吧,要知道双鸭山大学心理系单身妹子还是很多啊. 整体-局部范式是心理学的经典实验之一.请尝试利用 MAT ...
- springboot 创建非web项目及数据源简单使用
项目组马上要使用springboot来重构程序,首先要对几个比较小的非web项目重构,所以新手入门,简单做了个小例子 代码结构如下: dao层 package com.mysping.myboot00 ...
- 初学Python——面向对象编程
一.面向对象 or 面向过程? 编程范式: 编程是 程序 员 用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程 , 一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所 ...
- python redis存入字典序列化存储
在python中通过redis hset存储字典时,必须主动把字典通过json.dumps()序列化为字符串后再存储, 不然hget获取后将无法通过json.loads()反序列化为字典 序列化存储 ...
- ASP.NET Core 判断请求是否为Ajax请求
我们可以通过HTTP请求头来判断是否为Ajax请求,Ajax请求的request headers里都会有一个key为x-requested-with,值为XMLHttpRequest的header 所 ...
- [翻译] ASP.NET Core 利用 Docker、ElasticSearch、Kibana 来记录日志
原文: Logging with ElasticSearch, Kibana, ASP.NET Core and Docker 一步一步指导您使用 ElasticSearch, Kibana, ASP ...
- Python入门-从HelloWorld开始
前言 最近在招聘网上看了许多公司的招聘要求,发现很多公司希望求职者能会Python,特别是一些自动化测试的职位,以前对Python只是介于听说或是一些简单的了解,所以既然市场有需求,那么我们就来学习一 ...
- Python中Socket粘包问题的解决
服务器端 import socket import subprocess import struct server = socket.socket() ip_port = ("192.168 ...