diff --git a/wwwroot/api/get_org_groups.dspy b/wwwroot/api/get_org_groups.dspy index f6f3605..d0b4e2e 100644 --- a/wwwroot/api/get_org_groups.dspy +++ b/wwwroot/api/get_org_groups.dspy @@ -8,8 +8,10 @@ rows = [] for g in groups: vid = g.get('vendor_group_id', '') vendor = g.get('vendor', '') + name = g.get('name', '') if vid: - rows.append({"value": vid, "text": f"{vendor} - {vid}"}) + display = f"{vendor} - {name}" if name else f"{vendor} - {vid}" + rows.append({"value": vid, "text": display}) debug(f"get_org_groups: org={org_id}, count={len(rows)}") return json.dumps(rows, ensure_ascii=False) diff --git a/wwwroot/api/rl_upload.dspy b/wwwroot/api/rl_upload.dspy index e70fc07..d3d8d1d 100644 --- a/wwwroot/api/rl_upload.dspy +++ b/wwwroot/api/rl_upload.dspy @@ -1,11 +1,27 @@ vendor_group_id = params_kw.get('vendor_group_id', '') source_url = params_kw.get('source_url', '') -asset_type = params_kw.get('asset_type', 'Image') +asset_type = params_kw.get('asset_type', '') name = params_kw.get('name', '') if not vendor_group_id or not source_url: - return json.dumps({"status": "error", "data": {"message": "请选择认证组合并提供素材URL"}}, ensure_ascii=False) + return json.dumps({"status": "error", "data": {"message": "请选择认证组合并上传素材文件"}}, ensure_ascii=False) + +# Validate media file type from path extension +import os +ext = os.path.splitext(source_url.split('?')[0])[1].lower() if source_url else '' +media_map = { + '.jpg': 'Image', '.jpeg': 'Image', '.png': 'Image', '.gif': 'Image', '.bmp': 'Image', '.webp': 'Image', '.svg': 'Image', + '.mp4': 'Video', '.avi': 'Video', '.mov': 'Video', '.wmv': 'Video', '.flv': 'Video', '.mkv': 'Video', '.webm': 'Video', + '.mp3': 'Audio', '.wav': 'Audio', '.aac': 'Audio', '.flac': 'Audio', '.ogg': 'Audio', '.wma': 'Audio', '.m4a': 'Audio', +} +detected_type = media_map.get(ext, '') +if ext and not detected_type: + return json.dumps({"status": "error", "data": {"message": f"不支持的文件类型: {ext},请上传图片、音频或视频文件"}}, ensure_ascii=False) +if not asset_type and detected_type: + asset_type = detected_type +if not asset_type: + asset_type = 'Image' # If source_url is base64 data or local path, convert to public URL if source_url.startswith('data:') or (not source_url.startswith('http') and len(source_url) < 8000): diff --git a/wwwroot/upload_asset.ui b/wwwroot/upload_asset.ui index 4ad9a92..6dffbbb 100644 --- a/wwwroot/upload_asset.ui +++ b/wwwroot/upload_asset.ui @@ -51,11 +51,10 @@ "required": true }, { - "uitype": "text", + "uitype": "file", "name": "source_url", - "label": "素材URL或base64", - "rows": 4, - "placeholder": "https://... 可公开访问的图片/视频URL\n或\ndata:image/png;base64,...", + "label": "素材文件", + "accept": "image/*,audio/*,video/*", "required": true }, {