This commit is contained in:
@@ -845,7 +845,26 @@ def upload(request):
|
|||||||
merged_group_data["错误信息"] = ";".join(group_errors[:3])
|
merged_group_data["错误信息"] = ";".join(group_errors[:3])
|
||||||
|
|
||||||
rel_paths = [f"images/{img[1]}" for img in group_images]
|
rel_paths = [f"images/{img[1]}" for img in group_images]
|
||||||
image_urls = [request.build_absolute_uri(settings.MEDIA_URL + rp) for rp in rel_paths]
|
|
||||||
|
# 改进:如果配置了 MinIO,则在上传阶段就同步到 MinIO,确保在线版本待处理列表能显示图片
|
||||||
|
image_urls = []
|
||||||
|
from minio_storage.minio_connect import is_minio_configured, upload_file, presigned_get_url
|
||||||
|
|
||||||
|
minio_enabled = is_minio_configured()
|
||||||
|
for rp in rel_paths:
|
||||||
|
abs_p = os.path.join(settings.MEDIA_ROOT, rp)
|
||||||
|
if minio_enabled:
|
||||||
|
try:
|
||||||
|
# 上传到 MinIO
|
||||||
|
upload_file(abs_p, rp)
|
||||||
|
# 生成预签名 URL
|
||||||
|
url = presigned_get_url(rp)
|
||||||
|
image_urls.append(url)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"上传临时图片到 MinIO 失败: {e}")
|
||||||
|
image_urls.append(request.build_absolute_uri(settings.MEDIA_URL + rp))
|
||||||
|
else:
|
||||||
|
image_urls.append(request.build_absolute_uri(settings.MEDIA_URL + rp))
|
||||||
|
|
||||||
file_results.append({
|
file_results.append({
|
||||||
"name": f.name,
|
"name": f.name,
|
||||||
@@ -1883,7 +1902,8 @@ def export_achievements_csv(request):
|
|||||||
# 6. 否则回退到 CSV
|
# 6. 否则回退到 CSV
|
||||||
output = io.StringIO()
|
output = io.StringIO()
|
||||||
output.write('\ufeff') # UTF-8 BOM
|
output.write('\ufeff') # UTF-8 BOM
|
||||||
writer = csv.DictWriter(output, fieldnames=headers)
|
# 增加 extrasaction='ignore' 以忽略 _image_refs 等内部辅助字段
|
||||||
|
writer = csv.DictWriter(output, fieldnames=headers, extrasaction='ignore')
|
||||||
writer.writeheader()
|
writer.writeheader()
|
||||||
for row in parsed_data_list:
|
for row in parsed_data_list:
|
||||||
writer.writerow(row)
|
writer.writerow(row)
|
||||||
|
|||||||
Reference in New Issue
Block a user