From 55371ca42d98154d344ed864e23186a5fbfe1903 Mon Sep 17 00:00:00 2001 From: jingrow Date: Wed, 5 Nov 2025 03:42:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E7=AB=AF=E5=A2=9E=E5=8A=A0upload=5Ffi?= =?UTF-8?q?le=E8=B7=AF=E7=94=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jingrow/frontend/src/shared/api/common.ts | 4 +- apps/jingrow/jingrow/api/page.py | 41 +++++++++++++++++-- 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/apps/jingrow/frontend/src/shared/api/common.ts b/apps/jingrow/frontend/src/shared/api/common.ts index 08dd8a7..6035615 100644 --- a/apps/jingrow/frontend/src/shared/api/common.ts +++ b/apps/jingrow/frontend/src/shared/api/common.ts @@ -129,7 +129,7 @@ export const uploadAttachment = async ( formData.append('folder', 'Home') const response = await axios.post( - `/api/action/upload_file`, + `/jingrow/upload_file`, formData, { headers: { @@ -334,7 +334,7 @@ export const uploadFileToJingrow = async ( } const response = await axios.post( - `/api/action/upload_file`, + `/jingrow/upload_file`, formData, { headers: { diff --git a/apps/jingrow/jingrow/api/page.py b/apps/jingrow/jingrow/api/page.py index 6bf97dc..cad343b 100644 --- a/apps/jingrow/jingrow/api/page.py +++ b/apps/jingrow/jingrow/api/page.py @@ -5,7 +5,7 @@ 提供对云端数据库的增删改查操作 """ -from fastapi import APIRouter, HTTPException, Request +from fastapi import APIRouter, HTTPException, Request, UploadFile, File, Form from fastapi.responses import JSONResponse from typing import Dict, Any, Optional import json @@ -198,5 +198,40 @@ async def get_record_count(request: Request, pagetype: str): raise HTTPException(status_code=500, detail=str(e)) - - +@router.post("/jingrow/upload_file") +async def upload_file_api( + file: UploadFile = File(...), + attached_to_pagetype: Optional[str] = Form(None), + attached_to_name: Optional[str] = Form(None), + attached_to_field: Optional[str] = Form(None) +): + """上传文件到Jingrow服务器""" + try: + # 读取文件内容 + file_content = await file.read() + filename = file.filename or "uploaded_file" + + # 调用 jingrow.upload_file + result = jingrow.upload_file( + file_data=file_content, + filename=filename, + attached_to_pagetype=attached_to_pagetype, + attached_to_name=attached_to_name, + attached_to_field=attached_to_field + ) + + # 检查结果 + if result.get('success'): + return JSONResponse(content={ + "message": { + "file_url": result.get('file_url'), + "file_name": result.get('file_name') + } + }) + else: + raise HTTPException(status_code=400, detail=result.get('error', '上传文件失败')) + + except HTTPException: + raise + except Exception as e: + raise HTTPException(status_code=500, detail=str(e))