python文件上傳


實現:client上傳圖片文件到server

如下圖所示,圖片與post_client.py在同一當前目錄

-------------------post_server.py-----------------------------------------

import subprocess
#subprocess.Popen,主要用Popen這個類實現shell
import os
import socket
sk=socket.socket()
print(sk)
address=('127.0.0.1',8005)
sk.bind(address)
sk.listen(3)
print('waiting.....')
BASE_DIR=os.path.dirname(os.path.abspath(__file__))
while True:
conn,addr = sk.accept()
print(addr)
while True:
data=conn.recv(1024) #接收
cmd,filename,filesize=str(data,'utf-8').split('|') #用三個變量解析接收的並用|分隔
path=os.path.join(BASE_DIR,'yuan','filename') #路徑拼接,這里指定在yuan下
filesize=int(filesize)

#循環收
f=open(path,'ab')
has_receive=0
while has_receive!=filesize:
data=conn.recv(1024)
f.write(data)
has_receive+=len(data)
f.close()


--------------------post_client.py------------------------
import socket
import os
sk=socket.socket()
print(sk)
address=('127.0.0.1',8005)
sk.connect(address)
BASE_DIR=os.path.dirname(os.path.abspath(__file__))

while True:
inp=input('>>>').strip() #post|1.png
cmd,path = inp.split('|') #兩個變量接收,並用|分隔開
path=os.path.join(BASE_DIR,path) #路徑拼接-----絕對路徑

filename=os.path.basename(path) #你放參數路徑,它會取到最后的文件名字
file_size=os.stat(path).st_size # 看文件大小
file_info='post|%s|%s'%(filename,file_size) #
sk.sendall(bytes(file_info,'utf-8')) #發過去
#循環發
f = open(path, 'rb') # 打開
has_sent=0 #已發的
while has_sent !=file_size:
data=f.read(1024) #每次1024個的一段段發
sk.sendall(data)
has_sent+=len(data)
f.close()
print('上傳成功')




sk.close()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM