python post传输文件脚本

简介:

ps:背景,无法ssh相互访问机器(一般中间有堡垒机阻拦)的情况下,但是使用域名可以进行访问的情况下 可以使用http协议进行文件的上传。

服务器端代码(接受post的一端)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#coding=utf-8
from  BaseHTTPServer  import  BaseHTTPRequestHandler
import  cgi
class    PostHandler(BaseHTTPRequestHandler):
     def  do_POST( self ):
         form  =  cgi.FieldStorage(
             fp = self .rfile,
             headers = self .headers,
             environ = { 'REQUEST_METHOD' : 'POST' ,
             'CONTENT_TYPE' : self .headers[ 'Content-Type' ],
                 }       
             )       
         self .send_response( 200 )
         self .end_headers()
         self .wfile.write( 'Client: %sn '  %  str ( self .client_address) )
         self .wfile.write( 'User-agent: %sn'  %  str ( self .headers[ 'user-agent' ]))
         self .wfile.write( 'Path: %sn' % self .path)
         self .wfile.write( 'Form data:n' )
         for  field  in  form.keys():
             field_item  =  form[field]
             filename  =  field_item.filename
             filevalue   =  field_item.value
             filesize  =  len (filevalue) #文件大小(字节)
             print  len (filevalue)
             with  open (filename.decode( 'utf-8' ) + 'a' , 'wb' ) as f:
                 f.write(filevalue)
         return  
 
if  __name__ = = '__main__' :
     from  BaseHTTPServer  import  HTTPServer
     sever  =  HTTPServer(( '0.0.0.0' , 8000 ),PostHandler)
     print  'Starting server, use <Ctrl-C> to stop'
     sever.serve_forever()

客户端 (发送post的一端)

1
2
3
4
5
6
7
#coding=utf-8
import  requests
url  =  'http://xxxxxxxxxxxxxxxxxxx:8000'
path  =  u '/Users/test/student/py/myspider.py'
print  path
files  =  { 'file' open (path,  'rb' )}
=  requests.post(url, files = files)


本文转自  拖鞋崽  51CTO博客,原文链接:http://blog.51cto.com/1992mrwang/1597407
相关文章
|
21天前
|
Python
【python】python跨文件使用全局变量
【python】python跨文件使用全局变量
|
5天前
|
存储 Python
用Python实现批量下载文件——代理ip排除万难
用Python实现批量下载文件——代理ip排除万难
|
5天前
|
JSON 关系型数据库 数据库
《Python 简易速速上手小册》第6章:Python 文件和数据持久化(2024 最新版)
《Python 简易速速上手小册》第6章:Python 文件和数据持久化(2024 最新版)
30 0
|
5天前
|
数据挖掘 索引 Python
Python 读写 Excel 文件
Python 读写 Excel 文件
11 0
|
5天前
|
数据安全/隐私保护 Python
Python文件与目录操作:面试中的高频考点
【4月更文挑战第15天】本文介绍了Python文件和目录操作的面试重点,包括文件的读写、目录遍历及权限管理。强调了文件关闭、异常处理、特殊文件判断以及权限位和权限字符串的理解。提供了代码示例,如读写文件、遍历目录和更改文件权限,帮助读者在面试中表现出色。掌握这些技能将对编程求职之路大有裨益。
17 0
|
7天前
|
存储 监控 开发工具
对象存储OSS产品常见问题之python sdk中的append_object方法支持追加上传xls文件如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
37 9
|
14天前
|
JSON 测试技术 持续交付
自动化测试与脚本编写:Python实践指南
【4月更文挑战第9天】本文探讨了Python在自动化测试中的应用,强调其作为热门选择的原因。Python拥有丰富的测试框架(如unittest、pytest、nose)以支持自动化测试,简化测试用例的编写与维护。示例展示了使用unittest进行单元测试的基本步骤。此外,Python还适用于集成测试、系统测试等,提供模拟外部系统行为的工具。在脚本编写实践中,Python的灵活语法和强大库(如os、shutil、sqlite3、json)助力执行复杂测试任务。同时,Python支持并发、分布式执行及与Jenkins、Travis CI等持续集成工具的集成,提升测试效率和质量。
|
21天前
|
C++ Python
【C++/Python】C++调用python文件
【C++/Python】C++调用python文件