zoukankan      html  css  js  c++  java
  • python各种post上传文件

    1、带证书上传文件

    filename = '/tmp/test.cert'
    hash_v = 'assumethisisahash'

    #这是一种流式上传的方式
    with open(filename, 'rb') as f:
    ....requests.post(link, data={'hash': hash_v}, files={'filename':f}, verify='/tmp/test.cert')

    2、最简单的流式上传

    with open('massive-body') as f:
        requests.post('http://some.url/streamed', data=f)

    3、块编码请求

    def gen():
        yield 'hi'
        yield 'there'
    
    requests.post('http://some.url/chunked', data=gen())

    其他内容可参见:http://www.ziliao1.com/Article/Show/05534046411C9B8866742DE312F126CB.html

    4、复杂的流式上传,为了兼容中文文件,还对文件名称中途做了一个replace替换

    def get_content_code(url, res_path, encoded_name, file_name):
        with open(res_path, 'rb') as f_:
            m = MultipartEncoder(
                fields={'file': (encoded_name, f_,
                                 'application/octet-stream')}
            )
            utils.logger.info('body:{},encoded_name:{},file_name:{}'.format(m,encoded_name,file_name))
    
            decoded_m = m.to_string()
            decoded_m=decoded_m.replace(encoded_name, file_name)
            utils.logger.info('decoded_m:{}'.format(decoded_m))
            utils.logger.info('url:{}'.format(url))
            response = requests.post(url,
                                     data=decoded_m,
                                     headers={'Content-Type': m.content_type,
                                              'charset': 'UTF-8'})
            utils.logger.info('content: {}'.format(response.content))
    
            try:
                content = json.loads(response.content)
            except ValueError:
                content = response.content
            return content, response.status_code
    

      

  • 相关阅读:
    《编写高质量代码》读书笔记
    IL,Emit之OpCodes说明(备查)
    每天进步一点点
    DOCTYPE 与浏览器模式分析[转]
    一个EL IF表达式引发的血案
    JVM系列文章
    SunOs设置环境变量
    Solaris系统查看进程与端口对应关系的命令
    jsp 报错调试
    vi命令提示:Terminal too wide
  • 原文地址:https://www.cnblogs.com/slqt/p/5642415.html
Copyright © 2011-2022 走看看