import os import requests def auto_import(data, target_url): # 2. 准备文件数据 files = [] opened_files = [] # 记录已打开的文件柄,便于最后关闭 IMAGE_PATHS = data.get("local_paths") try: for field_name, path in IMAGE_PATHS.items(): if path and os.path.exists(path): # 以二进制方式打开文件 f = open(path, "rb") opened_files.append(f) # Request 的 files 格式: ("表单字段名", ("文件名", 文件对象, "MIME类型")) files.append(( field_name, (os.path.basename(path), f, "image/jpeg") )) else: print(f"[Warning] 图片不存在或未配置跳过: {path}") if not files: print("没有找到任何可上传的图片文件,请检查 IMAGE_PATHS 路径。") return print(f"开始请求 API: {target_url} ...") # 3. 发起 multipart/form-data 请求 response = requests.post(target_url, data=data, files=files) # 4. 打印结果 print(f"Status Code: {response.status_code}") try: print("Response JSON:", response.json()) except Exception: print("Response Text:", response.text) finally: # 确保所有文件句柄都被关闭 for f in opened_files: f.close() if __name__ == '__main__': target_url = f"http://192.168.77.249:7755/api/import/process_and_import" for i in range(2, 11): request_data = { "card_name": f"测试卡-{i}", "cardNo": f"testNo-{i}", "card_type": "pokemon", "is_reflect_card": True, "strict_mode": True, # 若为 True 则必须凑齐上面定义的4张主图 "local_paths": { "front_ring": rf"C:\Code\ML\Image\Card\img20_test\{i}_front_ring.jpg", "front_coaxial": rf"C:\Code\ML\Image\Card\img20_test\{i}_back_coaxial.jpg", "back_ring": r"C:\Code\ML\Image\Card\b2.jpg", "back_coaxial": rf"C:\Code\ML\Image\Card\img20_test\{i}_back_coaxial.jpg", "front_gray": rf"C:\Code\ML\Image\Card\img20_test\{i}_front_gray.jpg", "back_gray": rf"C:\Code\ML\Image\Card\img20_test\{i}_back_gray.jpg" } } auto_import(request_data, target_url)