@@ -71,7 +71,7 @@ def write(
7171 }
7272 headers [self .TIEFBLUE_HEADER_KEY ] = self .encode_base64 (param )
7373 req = self .client .post ("/api/upload/binary" , headers = headers , data = data )
74- pprint ( req . request )
74+
7575 return req
7676
7777 def read (
@@ -103,40 +103,48 @@ def upload_from_file(
103103 parameter = Parameter ()
104104 parameter .contentDisposition = f'attachment; filename="{ disposition } "'
105105 with open (file_path , 'rb' ) as fp :
106- res = self .write (object_key = object_key , data = fp .read (), parameter = parameter )
106+ res = self .write (object_key = object_key , data = fp .read (), parameter = parameter , token = token )
107107 return res
108108
109- def init_upload_by_part (self , object_key : str , parameter = None ):
109+ def init_upload_by_part (self , object_key : str , parameter = None , token : str = "" ):
110110 data = {
111111 'path' : object_key
112112 }
113113 if parameter is not None :
114114 data ['option' ] = parameter .__dict__
115+ headers = {
116+ "Authorization" : f"Bearer { token } " ,
117+ }
115118 url = f"/api/upload/multipart/init"
116- return self .client .post (url , host = self .host , json = data )
119+ return self .client .post (url , host = self .host , headers = headers , json = data )
117120
118- def upload_by_part (self , object_key : str , initial_key : str , chunk_size : int , number : int , body ):
121+ def upload_by_part (self , object_key : str , initial_key : str , chunk_size : int , number : int , body , token : str = "" ):
119122 param = {
120123 'initialKey' : initial_key ,
121124 'number' : number ,
122125 'partSize' : chunk_size ,
123126 'objectKey' : object_key
124127 }
125- headers = {}
128+ headers = {
129+ "Authorization" : f"Bearer { token } " ,
130+ }
126131 headers [self .TIEFBLUE_HEADER_KEY ] = self ._dump_parameter (param )
127132 url = f"/api/upload/multipart/upload"
128133 resp = self .client .post (url , host = self .host , data = body , headers = headers )
129134 return resp
130135
131136
132- def complete_upload_by_part (self , object_key , initial_key , part_string ):
137+ def complete_upload_by_part (self , object_key , initial_key , part_string , token ):
133138 data = {
134139 'path' : object_key ,
135140 'initialKey' : initial_key ,
136141 'partString' : part_string
137142 }
143+ headers = {
144+ "Authorization" : f"Bearer { token } " ,
145+ }
138146 url = f"/api/upload/multipart/complete"
139- resp = self .client .post (url , host = self .host , json = data )
147+ resp = self .client .post (url , host = self .host , headers = headers , json = data )
140148 return resp
141149
142150 def upload_From_file_multi_part (
@@ -161,27 +169,34 @@ def upload_From_file_multi_part(
161169 parameter = Parameter ()
162170 parameter .contentDisposition = f'attachment; filename="{ disposition } "'
163171 bar_format = "{l_bar}{bar}| {n:.02f}/{total:.02f} % [{elapsed}<{remaining}, {rate_fmt}{postfix}]"
164- with open (file_path , 'r ' ) as f :
172+ with open (file_path , 'rb ' ) as f :
165173 pbar = tqdm (total = 100 , desc = f"Uploading { disposition } " , smoothing = 0.01 , bar_format = bar_format ,
166174 disable = not progress_bar )
167- f .seek (0 )
168175 if size < _DEFAULT_CHUNK_SIZE * 2 :
169- self .write (object_key = object_key , data = f .buffer , parameter = parameter , token = token )
176+
177+ self .write (object_key = object_key , data = f .read (), parameter = parameter , token = token )
170178 pbar .update (100 )
171179 pbar .close ()
172180 return
173181 chunks = split_size_by_part_size (size , chunk_size )
174- initial_key = self .init_upload_by_part (object_key , parameter ).get ('initialKey' )
182+ initial_key = self .init_upload_by_part (object_key , parameter , token ).get ('initialKey' )
175183 part_string = []
184+ uploaded = 0
176185 for c in chunks :
177186 f .seek (c .Offset )
178- num_to_upload = min (chunk_size , size - c .Offset )
179- part_string .append (self .upload_by_part (object_key , initial_key , chunk_size = c .Size , number = c .Number ,
180- body = f .buffer .read (c .Size )).get ('partString' ))
181- percent = num_to_upload * 100 / (size + 1 )
182- pbar .update (percent )
187+ chunk_data = f .read (c .Size )
188+ resp = self .upload_by_part (
189+ object_key , initial_key , chunk_size = c .Size , number = c .Number ,
190+ body = chunk_data , token = token
191+ )
192+ part_string .append (resp .get ('partString' ))
193+ uploaded += c .Size
194+ percent = uploaded * 100 / size
195+ pbar .n = percent
196+ pbar .refresh ()
197+ pbar .update (100 - pbar .n )
183198 pbar .close ()
184- return self .complete_upload_by_part (object_key , initial_key , part_string )
199+ return self .complete_upload_by_part (object_key , initial_key , part_string , token )
185200
186201 def download_from_file (self ):
187202
0 commit comments