Merge pull request #565 from Feige-cn/front-end

fix download bug
This commit is contained in:
Isaac 2025-03-13 16:34:57 +08:00 committed by GitHub
commit 38e34219d3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 21 additions and 7 deletions

16
app.py
View File

@ -1,4 +1,5 @@
import asyncio
import os
import threading
import tomllib
import uuid
@ -10,7 +11,12 @@ from pathlib import Path
from fastapi import Body, FastAPI, HTTPException, Request
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import HTMLResponse, JSONResponse, StreamingResponse
from fastapi.responses import (
FileResponse,
HTMLResponse,
JSONResponse,
StreamingResponse,
)
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from pydantic import BaseModel
@ -93,6 +99,14 @@ async def index(request: Request):
return templates.TemplateResponse("index.html", {"request": request})
@app.get("/download")
async def download_file(file_path: str):
if not os.path.exists(file_path):
raise HTTPException(status_code=404, detail="File not found")
return FileResponse(file_path, filename=os.path.basename(file_path))
@app.post("/tasks")
async def create_task(prompt: str = Body(..., embed=True)):
task = task_manager.create_task(prompt)

View File

@ -6,7 +6,7 @@ set "VENV_DIR=%~dp0venv"
set "PYTHON_PATH=%VENV_DIR%\python.exe"
where git >nul 2>&1
if !errorlevel! == 0 (
if %errorlevel% == 0 (
echo Trying to sync with GitHub repository...
git pull origin front-end 2>&1 || echo Failed to sync with GitHub, skipping update...
) else (

View File

@ -286,27 +286,27 @@ function createStepElement(type, content, timestamp) {
fileInteractionHtml = `
<div class="file-interaction image-preview">
<img src="${filePath}" alt="${fileName}" class="preview-image" onclick="showFullImage('${filePath}')">
<a href="${filePath}" download="${fileName}" class="download-link"> 下载图片</a>
<a href="/download?file_path=${filePath}" download="${fileName}" class="download-link"> 下载图片</a>
</div>
`;
} else if (['mp3', 'wav', 'ogg'].includes(fileExtension)) {
fileInteractionHtml = `
<div class="file-interaction audio-player">
<audio controls src="${filePath}"></audio>
<a href="${filePath}" download="${fileName}" class="download-link"> 下载音频</a>
<a href="/download?file_path=${filePath}" download="${fileName}" class="download-link"> 下载音频</a>
</div>
`;
} else if (fileExtension === 'py') {
} else if (['html', 'js', 'py'].includes(fileExtension)) {
fileInteractionHtml = `
<div class="file-interaction code-file">
<button onclick="simulateRunPython('${filePath}')" class="run-button"> 模拟运行</button>
<a href="${filePath}" download="${fileName}" class="download-link"> 下载文件</a>
<a href="/download?file_path=${filePath}" download="${fileName}" class="download-link"> 下载文件</a>
</div>
`;
} else {
fileInteractionHtml = `
<div class="file-interaction">
<a href="${filePath}" download="${fileName}" class="download-link"> 下载文件: ${fileName}</a>
<a href="/download?file_path=${filePath}" download="${fileName}" class="download-link"> 下载文件: ${fileName}</a>
</div>
`;
}