|
2 | 2 | import base64 |
3 | 3 | import os |
4 | 4 | import re |
| 5 | +import time |
5 | 6 | import zipfile |
6 | 7 | from pathlib import Path |
7 | 8 |
|
@@ -73,9 +74,9 @@ def _upload_image_to_minio(image_data: bytes, filename: str, db_id: str) -> str: |
73 | 74 | minio_client = get_minio_client() |
74 | 75 | minio_client.ensure_bucket_exists("kb-images") |
75 | 76 | file_id = hashstr(filename, length=16) |
76 | | - object_name = f"{db_id}/{file_id}/images/{Path(filename).name}" |
77 | | - |
| 77 | + timestamp = int(time.time() * 1000000) |
78 | 78 | suffix = Path(filename).suffix.lower() |
| 79 | + object_name = f"{db_id}/{file_id}/images/{timestamp}_{Path(filename).name}" |
79 | 80 | content_type_map = { |
80 | 81 | ".jpg": "image/jpeg", |
81 | 82 | ".jpeg": "image/jpeg", |
@@ -136,7 +137,8 @@ def _convert_with_docling(file_path: Path, params: dict | None = None) -> str: |
136 | 137 | uri = str(pic.image.uri) |
137 | 138 | if uri.startswith("data:"): |
138 | 139 | image_data, mime_type = _parse_data_uri(uri) |
139 | | - filename = f"image_{len(image_refs)}.{mime_type.split('/')[-1]}" |
| 140 | + timestamp = int(time.time() * 1000000) # 微秒级时间戳 |
| 141 | + filename = f"image_{timestamp}.{mime_type.split('/')[-1]}" |
140 | 142 | image_refs.append((filename, image_data)) |
141 | 143 |
|
142 | 144 | # 上传图片并收集 URL |
@@ -650,7 +652,8 @@ async def _process_images(zip_file: zipfile.ZipFile, images_dir: str, db_id: str |
650 | 652 | data = f.read() |
651 | 653 |
|
652 | 654 | # 上传到MinIO |
653 | | - object_name = f"{db_id}/{file_id}/images/{Path(img_name).name}" |
| 655 | + timestamp = int(time.time() * 1000000) |
| 656 | + object_name = f"{db_id}/{file_id}/images/{timestamp}_{Path(img_name).name}" |
654 | 657 | content_type = CONTENT_TYPE_MAP.get(suffix, "image/jpeg") |
655 | 658 |
|
656 | 659 | result = await minio_client.aupload_file( |
|
0 commit comments