編碼問題,檔案上傳

2021-09-19 08:49:04 字數 2408 閱讀 6291

編碼問題,檔案上傳

1.檔案上傳:

python3:只有兩種資料型別 str bytes

str:unicode

bytes:16進製制型別

#author: wylkjj

#date:2019/4/18

s='asd阿達'

print(type(s)) ##規則:

#str>>>>>>bytes:編碼

#第一種編碼方式:

b=bytes(s,'utf8')#utf8規定乙個漢字佔三個位元組

print(b) #b'asd\xe9\x98\xbf\xe8\xbe\xbe'

#第二種編碼方式:

b2=s.encode('utf8')

print(b2) #b'asd\xe9\x98\xbf\xe8\xbe\xbe'

s3=s.encode('gbk')

print('gbk編碼下的bytes資料:',s3)#b'asd\xb0\xa2\xb4\xef'

#bytes>>>>>>str:解碼

# b3=str(b2,'gbk')

# print(b3) #asd闃胯揪 亂碼

#解碼方法1:

b3=str(b2,'utf8')#b2為bytes型別

print(b3) #asd阿達

#解碼方法2:

b4=b2.decode('utf8')

print(b4) #asd阿達

s4=b2.decode('gbk')#系統預設呼叫windows的shell,而windows預設的編碼形式是utf8

print(s4) #asd闃胯揪

2.檔案上傳:

#author: wylkjj

#date:2019/4/20

#服務端

import subprocess

import socket

import os

sk=socket.socket()

address=('127.0.0.1',8000)

sk.bind(address)

sk.listen(2)

print('waiting')

base_dir=os.path.dirname(os.path.abspath(__file__))

while 1:

conn,addr=sk.accept()

while 1:

data=conn.recv(1024)

cmd,file_name,file_size=str(data,'utf8').split('|')

path=os.path.join(base_dir,'eric',file_name)

file_size=int(file_size)

has_reciver=0

with open(path,'ab') as f: #a操作是在檔案最後面新增內容

data=conn.recv(1024)

f.write(data)

has_reciver+=len(data)

sk.close()

#author: wylkjj

#date:2019/4/20

#客戶端

import subprocess

import socket

import os

sk=socket.socket()

address=('127.0.0.1',8000)

sk.connect(address)

base_dir=os.path.dirname(os.path.abspath(__file__))#獲取路徑

while true:

inp = input('>>>').strip()#post|11.png(相對路徑)

cmd,path=inp.split('|')

path=os.path.join(base_dir,path)

file_name=os.path.basename(path)#取檔案名字

file_size=os.stat(path).st_size#獲取檔案大小

file_info='post|%s|%s'%(file_name,file_size)

sk.sendall(bytes(file_info,'utf8'))#編碼

with open(path,'rb') as f:#操作r後面加b的作用是模擬檔案格式等資訊

data = f.read(1024) # 定義讀取大小

has_sent=0

while has_sent!=file_size:

sk.sendall(data)

has_sent += len(data)

print('上傳成功')

sk.close()

檔案上傳相關問題

檔案上傳相關問題 1.副檔名的簡單獲取 string strrchr string haystack,mixed needle 在引數haystack中查詢引數needle,找到後,返回之後的字串。2.避免檔名重複 對於同一 的儲存路徑,不同使用者上傳的檔案可能重名,為避免同名檔案相互覆蓋,需給檔案...

上傳檔案超時問題

在上傳檔案過程中由於網速比較慢可能會屢次出現下列問題 org.apache.commons.fileupload.fileuploadbase iofileuploadexception processing of multipart form data request failed.read ti...

檔案上傳問題

1.檔案上傳的路徑問題 獲得伺服器的根目錄,通過ihostingenvironment hostingenv中的hostingenv.webrootpath 自建的目錄格式為attachmentfiledirectory uploadfiles 檔名稱為attachmenturl file.jpeg...