moved three.js viewer to static folder
modified upload.html and main.py accordingly
This commit is contained in:
@@ -17,3 +17,6 @@ mit folgender URL im Browser ist der Einstiegpunkt:
|
||||
|
||||
http://127.0.0.1:8001/static/upload.html
|
||||
|
||||
Ein Viewer für die hochgeladenen STEP files
|
||||
http://127.0.0.1:8001/static/viewer.html
|
||||
|
||||
|
||||
51
main.py
51
main.py
@@ -1,17 +1,58 @@
|
||||
from fastapi import FastAPI
|
||||
import os
|
||||
import tempfile
|
||||
import uuid
|
||||
|
||||
from fastapi import FastAPI, UploadFile, File, HTTPException
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
app = FastAPI()
|
||||
|
||||
app.mount("/static", StaticFiles(directory="static"), name="static")
|
||||
|
||||
# Für lokales Testen mit separatem Frontend (z.B. file:// oder anderer Port)
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=["*"], # in Produktion einschränken!
|
||||
allow_credentials=True,
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
)
|
||||
|
||||
UPLOAD_DIR = Path("uploads")
|
||||
UPLOAD_DIR.mkdir(exist_ok=True)
|
||||
|
||||
|
||||
@app.get("/")
|
||||
def read_root():
|
||||
return {"Hello": "World"}
|
||||
|
||||
@app.get("/health")
|
||||
def health():
|
||||
return {"status": "ok"}
|
||||
|
||||
@app.get("/items/{item_id}")
|
||||
def read_item(item_id: int, q: str | None = None):
|
||||
return {"item_id": item_id, "q": q}
|
||||
@app.post("/upload")
|
||||
async def upload_file(file: UploadFile = File(...)):
|
||||
filename = (file.filename or "").lower()
|
||||
safe_name = ""
|
||||
if not (filename.endswith(".step") or filename.endswith(".stp")):
|
||||
raise HTTPException(status_code=400, detail="Upload a .step or .stp file")
|
||||
|
||||
# eindeutiger Dateiname, um Kollisionen zu vermeiden
|
||||
suffix = Path(file.filename).suffix
|
||||
safe_name = f"{uuid.uuid4().hex}{suffix}"
|
||||
target = UPLOAD_DIR / safe_name
|
||||
|
||||
# Datei speichern (streaming)
|
||||
with target.open("wb") as f:
|
||||
while chunk := await file.read(1024 * 1024):
|
||||
f.write(chunk)
|
||||
|
||||
return {
|
||||
"original_filename": file.filename,
|
||||
"stored_as": safe_name,
|
||||
"content_type": file.content_type,
|
||||
"size_bytes": target.stat().st_size,
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const API_URL = "http://127.0.0.1:8000/upload";
|
||||
const API_URL = "http://127.0.0.1:8001/upload";
|
||||
|
||||
const fileInput = document.getElementById("fileInput");
|
||||
const uploadBtn = document.getElementById("uploadBtn");
|
||||
|
||||
Reference in New Issue
Block a user