Chuyện là em có code 1 đoạn code up ảnh lên web qua api. Mà em thấy nó lâu quá , lâu hơn em up tay trong khi code nó còn chạy 4 luồng. Cụ thể em up vài trăm ảnh tổng dung lương khoảng 420mb mà mất hơn 20p. Em muốn hỏi là cái này là do bên phía sever hay là do code chưa tối ưu ạ (bên web không có giới hạn gì về upload hay request gì cả) Code của em đây ạ Code: def upload_image_worker(url, api, image_path): # Mã hoá ảnh try: with open(image_path, "rb") as image_file: encoded_string = base64.b64encode(image_file.read()) except Exception as e: return 'Lỗi' # Tải ảnh lên sever try: response = requests.post(url, data={'source': encoded_string, 'action': 'upload', 'format': 'json', 'key': api}) response_json = response.json() if response.status_code == 200 and response_json['status_code'] == 200: return response_json['image']['url'] else: return 'Lỗi' # thông báo ảnh lỗi except Exception as e: return 'Lỗi' # thông báo ảnh lỗi def upload_image(url, api, list_image): uploaded_images = [] with concurrent.futures.ThreadPoolExecutor(max_workers=4) as executor: futures = [executor.submit(upload_image_worker, url, api, image_path) for image_path in list_image] for future in concurrent.futures.as_completed(futures): result = future.result() uploaded_images.append(result) return uploaded_images
upload ảnh dùng base64 nó lâu là đúng rồi, nó lâu từ lúc encode tới lúc transfer sau đó decode, mình phải dùng multipart-form hoặc gì đó binary hơn một chút chứ
Dạ em cảm ơn anh ạ . Anh có thể cho em xin thông tin chi tiết hơn 1 chút được không ạ. Tại cái tài liệu api nó bắt phải xài cái mã hoá base64 cho hình ảnh . Tài liệu api của nó đây ạ : https://v4-docs.chevereto.com/developer/api/api-v1.html#request-url Anh xem giúp em xem hay là do em hiểu sai cái nó yêu cầu ạ
nó cho xài file kìa Code: import requests url = "https://imagem.app/api/1/upload" payload = {'key': 'YOUR_KEY','format': 'json'} files = [ ('source', open('imagem.png','rb')) ] response = requests.request("POST", url, data = payload, files = files) print(response.text.encode('utf8'))