26 lines
968 B
Python
26 lines
968 B
Python
import os
|
|
import uuid
|
|
|
|
from flask import request, jsonify, url_for
|
|
|
|
import db
|
|
|
|
from core.flask_app import app
|
|
|
|
|
|
@app.route("/game/<slug>/upload", methods=["POST"])
|
|
def upload_file(slug):
|
|
"""Utilisé par les réglages Image/Vidéo pour héberger un fichier
|
|
envoyé par l'utilisateur (au lieu d'une simple adresse URL) — le
|
|
fichier est stocké dans le dossier du jeu, et l'adresse renvoyée est
|
|
ensuite utilisée exactement comme une URL normale."""
|
|
f = request.files.get("file")
|
|
if not f or not f.filename:
|
|
return jsonify({"error": "Aucun fichier reçu"}), 400
|
|
ext = "".join(c for c in os.path.splitext(f.filename)[1].lower() if c.isalnum() or c == ".")[:10]
|
|
filename = uuid.uuid4().hex + ext
|
|
upload_dir = os.path.join(db.game_dir(slug), "uploads")
|
|
os.makedirs(upload_dir, exist_ok=True)
|
|
f.save(os.path.join(upload_dir, filename))
|
|
return jsonify({"url": url_for("uploaded_file", slug=slug, filename=filename)})
|