files.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import io
  2. import uuid
  3. from fastapi import APIRouter
  4. from fastapi import File, UploadFile
  5. from fastapi.responses import StreamingResponse
  6. from utils.sx_time import sxtimeit
  7. from utils.sx_web import web_try
  8. from utils.sx_image import get_b64
  9. from app.common.minio import FileHandler
  10. from app import get_db
  11. router = APIRouter(
  12. prefix="/jpt/files",
  13. tags=["files-文件管理"],
  14. )
  15. @router.post("/data_management/")
  16. @web_try()
  17. @sxtimeit
  18. def put_file( file: UploadFile = File(...),):
  19. print("UploadFile-->",file.filename)
  20. file_handler = FileHandler("datax")
  21. file_name = str(uuid.uuid1())
  22. url = file_handler.put_byte_file("data_management/"+file_name, file.file.read())
  23. return url
  24. @router.get("/")
  25. # @web_try()
  26. @sxtimeit
  27. def get_file( uri: str):
  28. file_handler = FileHandler("datax")
  29. file = file_handler.get_file(uri)
  30. print(type(file))
  31. code = 200
  32. if len(file) == 0:
  33. code = 404
  34. response = StreamingResponse(io.BytesIO(file), status_code=code, media_type="application/octet-stream")
  35. # 在请求头进行配置
  36. response.headers["Content-Disposition"] = "attachment; filename="+uri+".table"
  37. return response