Davizig10jojo commited on
Commit
ebc0a59
·
verified ·
1 Parent(s): 54ed867

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +8 -5
app.py CHANGED
@@ -1,7 +1,8 @@
1
  import os
 
2
  from fastapi import FastAPI, HTTPException, Request
3
  from fastapi.middleware.cors import CORSMiddleware
4
- from fastapi.responses import FileResponse, JSON_Response
5
  from pydantic import BaseModel
6
 
7
  app = FastAPI()
@@ -33,7 +34,7 @@ class DeleteRequest(BaseModel):
33
  def health():
34
  return {"ok": True, "service": "huggingface-local-bucket"}
35
 
36
- # 📂 1. LISTAR ARQUIVOS DA PASTA MONTA /DATA
37
  @app.get("/files")
38
  def list_files():
39
  try:
@@ -62,14 +63,14 @@ def list_files():
62
  @app.post("/upload-url")
63
  def upload_url(payload: UploadURLRequest, request: Request):
64
  try:
65
- filename_encoded = urllib.parse.quote(payload.fileName) if hasattr(urllib, 'parse') else payload.fileName
66
  # Retorna o link de upload apontando diretamente para o nosso endpoint PUT abaixo
67
  base_url = str(request.base_url)
68
  # Garante que use HTTPS em produção
69
  if "hf.space" in base_url and base_url.startswith("http://"):
70
  base_url = base_url.replace("http://", "https://", 1)
71
 
72
- upload_endpoint = f"{base_url}upload-file/{payload.fileName}"
73
  return {"ok": True, "url": upload_endpoint}
74
  except Exception as e:
75
  return {"ok": False, "error": str(e)}
@@ -78,7 +79,9 @@ def upload_url(payload: UploadURLRequest, request: Request):
78
  @app.put("/upload-file/{filename}")
79
  async def receive_upload(filename: str, request: Request):
80
  try:
81
- filepath = os.path.join(STORAGE_DIR, filename)
 
 
82
 
83
  # Proteção simples de segurança de diretório
84
  if not os.path.abspath(filepath).startswith(os.path.abspath(STORAGE_DIR)):
 
1
  import os
2
+ import urllib.parse
3
  from fastapi import FastAPI, HTTPException, Request
4
  from fastapi.middleware.cors import CORSMiddleware
5
+ from fastapi.responses import FileResponse, JSONResponse
6
  from pydantic import BaseModel
7
 
8
  app = FastAPI()
 
34
  def health():
35
  return {"ok": True, "service": "huggingface-local-bucket"}
36
 
37
+ # 📂 1. LISTAR ARQUIVOS DA PASTA MONTADA /DATA
38
  @app.get("/files")
39
  def list_files():
40
  try:
 
63
  @app.post("/upload-url")
64
  def upload_url(payload: UploadURLRequest, request: Request):
65
  try:
66
+ filename_encoded = urllib.parse.quote(payload.fileName)
67
  # Retorna o link de upload apontando diretamente para o nosso endpoint PUT abaixo
68
  base_url = str(request.base_url)
69
  # Garante que use HTTPS em produção
70
  if "hf.space" in base_url and base_url.startswith("http://"):
71
  base_url = base_url.replace("http://", "https://", 1)
72
 
73
+ upload_endpoint = f"{base_url}upload-file/{filename_encoded}"
74
  return {"ok": True, "url": upload_endpoint}
75
  except Exception as e:
76
  return {"ok": False, "error": str(e)}
 
79
  @app.put("/upload-file/{filename}")
80
  async def receive_upload(filename: str, request: Request):
81
  try:
82
+ # Decodifica o nome do arquivo para salvar sem caracteres estranhos
83
+ filename_decoded = urllib.parse.unquote(filename)
84
+ filepath = os.path.join(STORAGE_DIR, filename_decoded)
85
 
86
  # Proteção simples de segurança de diretório
87
  if not os.path.abspath(filepath).startswith(os.path.abspath(STORAGE_DIR)):