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‘
时间: 2024-08-05 21:10:07

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

Python requests上传文件demo

#!/usr/bin/env python # -*- coding: utf-8 -*- import requests headers = {'uuid': '5cb572b7-c0a7-4d90-81a4-58d24f3e2949'} cookies={'Cookie':'pinId=9-Qim4TWS0e1ffsfn98I-w; unick=baiduyun; _tp=%2FS9%2FIuEE3omErKosHnjrkA%3D%3D; _pst=diwutest; shshshfpb=0

python +selenium上传文件

python +selenium上传文件 分为2部分 1.是input标签 driver.find_element_by_name("upload").send_keys('C:\\test.txt') 2.非input标签 https://blog.csdn.net/weixin_42024694/article/details/80080629 原文地址:https://www.cnblogs.com/ljf520hj/p/12181098.html

winform下通过webclient使用非流方式上传(post)数据和文件

这两天因为工作的需要,需要做一个winform上传数据到服务器端的程序.当时第一个想法是通过webservice的方式来实现,后来觉得麻 烦,想偷懒就没有用这样的方式,http的post方式变成了第一选择.因为以前用的都是httpwebrequest之类的东西进行post提 交,winform下面还真的是第一次,不过很快就在网上找到了webclient这个类,接下来开始实现功能,话说webclient用起来还真的很简 单,一个头信息的声明,然后是URL,最后是post的数据,就完事了.正在高兴的

Android连接socket服务器上传下载多个文件

android连接socket服务器上传下载多个文件1.socket服务端SocketServer.java public class SocketServer { int port = 8888;// 端口号,必须与客户端一致 // 选择进行传输的文件(测试) String path = "C:\\Temp"; String filePath = "E:\\img.png"; Socket client; public static void main(Strin

PHP核心编程--文件上传(包含多文件上传)

一.单文件上传 图片上传界面: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <form name='frm'action="./uploadSave.php" method="p

PHP上传(单个)文件示例

通过 PHP,可以把文件上传到服务器. 创建一个文件上传表单 允许用户从表单上传文件是非常有用的. 请看下面这个供上传文件的 HTML 表单: <html> <body> <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="attach_file">File

Js获取file上传控件的文件路径总结

总结一个获取file上传控件文件路径的方法 firefox由于保护机制只有文件名,不能获取完整路径. document.getElementById('file').onchange = function(){ alert(getFullPath(this)) } function getFullPath(obj){ if(!obj){return;} if(!-[1,]){obj.select();return document.selection.createRange().text;} r

php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)

网上有很多php文件上传的类,文件上传处理是php的一个特色(至少手册上是将此作为php特点来展示的,个人认为php在数组方面的优异功能更有特 色),学php的人都知道文件上传怎么做,但很多人在编程中却可能忽视了一些细节问题,那就是文件的类型(MIME).在表单将文件提交给php做处理之 前,浏览器会先解析识别一边是什么类型的文件,之后进入php处理环节,php又会去识别解析此文件的原始类型(并不是说你改成什么后缀就是什么文件). 在这个过程中会有一些浏览器兼容,更准确来说是文件类型解析标识不一

批处理向FTP上传指定属性的文件 批处理增量备份的例子

使用windows批处理向FTP上传具有指定属性的文件,类似增量备份功能. 对一个目录里的几个文件自动上传FTP时只上传有归档属性的文件,然后FTP上传成功后自动清除(本机)刚上传文件的归档属性. 类似于对文件增量备份的功能. @echo off rem 指定FTP用户名 set ftpUser=FTPUSERNAME rem 指定FTP密码 set ftpPass=FTPPASSWORD rem 指定FTP服务器地址 set ftpIP=192.168.0.2 设置待上传的本地文件夹目录 se