auto_img_insert.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. request_data = {
  40. "card_name": "测试2345",
  41. "cardNo": "fsg453",
  42. "card_type": "pokemon",
  43. "is_reflect_card": True,
  44. "strict_mode": False, # 若为 True 则必须凑齐上面定义的4张主图
  45. "local_paths": {
  46. "front_ring": r"C:\Code\ML\Image\Card\testimg\1_front_ring_0_1.jpg",
  47. "front_coaxial": r"C:\Code\ML\Image\Card\testimg\1_front_coaxial_1_0.jpg",
  48. "back_ring": r"C:\Code\ML\Image\Card\testimg\1_back_ring_0_1.jpg",
  49. "back_coaxial": r"C:\Code\ML\Image\Card\testimg\1_back_coaxial_1_0.jpg",
  50. "front_gray": None,
  51. "back_gray": None
  52. }
  53. }
  54. auto_import(request_data, target_url)