auto_img_insert.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import os
  2. import requests
  3. def auto_import(data, target_url):
  4. # 2. 准备文件数据
  5. files = []
  6. opened_files = [] # 记录已打开的文件柄,便于最后关闭
  7. IMAGE_PATHS = data.get("local_paths")
  8. try:
  9. for field_name, path in IMAGE_PATHS.items():
  10. if path and os.path.exists(path):
  11. # 以二进制方式打开文件
  12. f = open(path, "rb")
  13. opened_files.append(f)
  14. # Request 的 files 格式: ("表单字段名", ("文件名", 文件对象, "MIME类型"))
  15. files.append((
  16. field_name,
  17. (os.path.basename(path), f, "image/jpeg")
  18. ))
  19. else:
  20. print(f"[Warning] 图片不存在或未配置跳过: {path}")
  21. if not files:
  22. print("没有找到任何可上传的图片文件,请检查 IMAGE_PATHS 路径。")
  23. return
  24. print(f"开始请求 API: {target_url} ...")
  25. # 3. 发起 multipart/form-data 请求
  26. response = requests.post(target_url, data=data, files=files)
  27. # 4. 打印结果
  28. print(f"Status Code: {response.status_code}")
  29. try:
  30. print("Response JSON:", response.json())
  31. except Exception:
  32. print("Response Text:", response.text)
  33. finally:
  34. # 确保所有文件句柄都被关闭
  35. for f in opened_files:
  36. f.close()
  37. if __name__ == '__main__':
  38. # target_url = f"http://192.168.77.249:7755/api/import/process_and_import"
  39. target_url = f"http://127.0.0.1:7755/api/import/process_and_import"
  40. for i in range(2, 4):
  41. request_data = {
  42. "card_name": f"测试卡-{i}",
  43. "cardNo": f"testNo-{i}",
  44. "card_type": "pokemon",
  45. "is_reflect_card": True,
  46. "strict_mode": True, # 若为 True 则必须凑齐上面定义的4张主图
  47. "local_paths": {
  48. "front_ring": rf"C:\Code\ML\Image\Card\img20_test\{i}_front_ring.jpg",
  49. "front_coaxial": rf"C:\Code\ML\Image\Card\img20_test\{i}_back_coaxial.jpg",
  50. "back_ring": r"C:\Code\ML\Image\Card\b2.jpg",
  51. "back_coaxial": rf"C:\Code\ML\Image\Card\img20_test\{i}_back_coaxial.jpg",
  52. "front_gray": rf"C:\Code\ML\Image\Card\img20_test\{i}_front_gray.jpg",
  53. "back_gray": rf"C:\Code\ML\Image\Card\img20_test\{i}_back_gray.jpg"
  54. }
  55. }
  56. auto_import(request_data, target_url)