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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值