| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- 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)
|