大檔案上傳

2022-08-11 03:54:20 字數 1811 閱讀 7029

大檔案上傳

服務端

import socket

import os

import json

import struct

server = socket.socket()

server.bind(('127.0.0.1',8080))

server.listen(5)

while true:

conn,addr = server.accept()

while true:

try:

head=conn.recv(4)

dic_len=struct.unpack('i',head)[0]

b_json_dic=conn.recv(dic_len)

dic=json.loads(b_json_dic.decode('utf-8'))

file_len=dic.get('file_len')

recv_len = 0 #已經接收到的資料長度

with open(dic.get('file_name'),'wb')as f:

while recv_len < file_len:

data = conn.recv(1024)

f.write(data)

recv_len+=len(data)#已接收的資料長度不停的增加,直到超過檔案長度停止

print('上傳成功')

except connectionreseterror as e:

print(e)

break

conn.close()

客戶端

import json

import os

import socket

import struct

clicent = socket.socket()#拿起**

clicent.connect(('127.0.0.1',8080))#,撥號

while true:

movie_dir = r'c:\users\administrator\desktop\新建資料夾'

movie_list = os.listdir(movie_dir)

for i,movie in enumerate(movie_list,1):

print(i,movie)

choice = input('shuru')

if choice.isdigit():

choice = int(choice)-1

if choice in range(0,len(movie_list)):

path = movie_list[choice]

file_path = os.path.join(movie_dir,path)

file_len = os.path.getsize(file_path)

res_dic =

json_d = json.dumps(res_dic)

b_json_dic = json_d.encode('utf-8')

header = struct.pack('i',len(b_json_dic))

clicent.send(header)

clicent.send(b_json_dic)

with open(file_path,'rb') as f:

for i in f:

clicent.send(i)

else:

print('not ')

else:

print('dssd')

上傳大檔案 關於大檔案上傳

js計算檔案md5使用spark md5.js,據說這個庫使用的是世界上最快的md5演算法。js對檔案切片並使用ajax上傳切片 let size file.size 獲取檔案大小 const shardsize 1024 1024 塊大小1mb let shardcount math.ceil s...

大檔案上傳

首先先要建好幾個檔案 html裡面 1238 9141589 90php裡面 1 2 username post username 3 1 接收前端傳過來的引數 4 ori file name post filename 原始檔案的檔名 5 file files file 6 tmp name fi...

大檔案上傳

html頁面 td 姓名 td td input type text name uname class uname placeholder 姓名 td tr tr td 年齡 td td input type text name age class age placeholder 年齡 td tr ...