import os
import requests
# ====================== 配置区 ======================
UPLOAD_URL = "https://XXXX"
IMAGE_DIR = "./"
ARCHIVE_DIR = "./success"
FILE_FIELD_NAME = "file"
# 模拟浏览器请求头,解决403拦截
HEADERS = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
# ==================================================
ALLOWED_EXTENSIONS = (".jpg", ".jpeg", ".png", ".gif", ".bmp", ".webp")
def upload_and_move_images():
if not os.path.exists(ARCHIVE_DIR):
os.makedirs(ARCHIVE_DIR)
print(f"已创建归档目录:{ARCHIVE_DIR}")
image_files = [
f for f in os.listdir(IMAGE_DIR)
if os.path.isfile(os.path.join(IMAGE_DIR, f))
and f.lower().endswith(ALLOWED_EXTENSIONS)
]
if not image_files:
print("当前目录未找到任何图片文件")
return
print(f"找到 {len(image_files)} 张图片,开始上传...\n")
success_count = 0
fail_count = 0
for filename in image_files:
file_path = os.path.join(IMAGE_DIR, filename)
archive_path = os.path.join(ARCHIVE_DIR, filename)
try:
with open(file_path, "rb") as img_file:
files = {FILE_FIELD_NAME: (filename, img_file, "image/*")}
# 带上headers请求头
response = requests.post(UPLOAD_URL, headers=HEADERS, files=files, timeout=30)
if response.status_code == 200:
os.rename(file_path, archive_path)
print(f"✅ 上传成功:{filename} → 已移动至归档目录")
success_count += 1
else:
print(f"❌ 上传失败:{filename} | 状态码:{response.status_code} | 返回内容:{response.text}")
fail_count += 1
except Exception as e:
print(f"⚠️ 处理失败:{filename} | 错误:{str(e)}")
fail_count += 1
print(f"\n======== 上传完成 ========")
print(f"成功:{success_count} 张")
print(f"失败:{fail_count} 张")
print(f"失败图片保留在原目录,成功图片已移动至 {ARCHIVE_DIR}")
if __name__ == "__main__":
upload_and_move_images()
安装依赖
pip install urllib3==1.24.3 requests==2.21.0