01 ftp上傳簡單示例客戶端
阿新 • • 發佈:2019-01-07
import os import socket import json import struct client = socket.socket() client.connect(('127.0.0.1',8001)) #統計檔案大小 file_size = os.path.getsize(r'D:\python_workspace_s18\day029\aaa.mp4') #統計檔案描述資訊,給服務端,服務端按照我的檔案描述資訊來儲存檔案,命名檔案等等,現在放到一個字典裡面了 file_info = { 'file_name':'aaa.mp4', 'file_size':file_size, } #由於字典無法直接轉換成bytes型別的資料,所以需要json來將字典轉換為json字串.在把字串轉換為位元組型別的資料進行傳送 #json.dumps是將字典轉換為json字串的方法 file_info_json= json.dumps(file_info) #將字串轉換成bytes型別的資料 file_info_byte = file_info_json.encode('utf-8') #為了防止黏包現象,將檔案描述資訊的長度打包後和檔案的描述資訊的資料一起傳送過去 data_len = len(file_info_byte) data_len_struct = struct.pack('i',data_len) #傳送檔案描述資訊 client.send(data_len_struct + file_info_byte) #定義一個變數,=0,作為每次讀取檔案的長度的累計值 sum = 0 #開啟的aaa.mp4檔案,rb的形式, with open('aaa.mp4','rb') as f: #迴圈讀取檔案內容 while sum < file_size: #每次讀取的檔案內容,每次讀取1024B大小的資料 every_read_data = f.read(1024) #將sum累加,統計長度 sum += len(every_read_data) #將每次讀取的檔案的真實資料返送給服務端 client.send(every_read_data)