import io import time import uuid from fastapi import APIRouter from fastapi import File, UploadFile from fastapi.responses import StreamingResponse from utils.sx_time import sxtimeit from utils.sx_web import web_try from app.common.minio import FileHandler from app import get_db router = APIRouter( prefix="/jpt/files", tags=["files-文件管理"], ) @router.post("/data_management/") @web_try() @sxtimeit def put_file( file: UploadFile = File(...),): print("UploadFile-->",file.filename) file_handler = FileHandler("datax") file_name = str(uuid.uuid1()) url = file_handler.put_byte_file("data_management/"+file_name, file.file.read()) return url @router.get("/") @sxtimeit def get_file( uri: str): file_handler = FileHandler("datax") file = file_handler.get_file(uri) code = 200 if len(file) == 0: code = 404 response = StreamingResponse(io.BytesIO(file), status_code=code, media_type="application/octet-stream") # 在请求头进行配置 response.headers["Content-Disposition"] = "attachment; filename="+uri+".table" return response @router.get("/java/") @sxtimeit def get_file( uri: str): file_handler = FileHandler("datax") file = file_handler.get_file(uri) code = 200 if len(file) == 0: code = 404 response = StreamingResponse(io.BytesIO(file), status_code=code, media_type="application/octet-stream") # 在请求头进行配置 response.headers["Content-Disposition"] = "attachment; filename="+uri return response @router.post("/java/") @web_try() @sxtimeit def put_java_jar( file: UploadFile = File(...),): print("UploadFile-->",file.filename) file_handler = FileHandler("datax") file_name = str(int(time.time()))+'_'+file.filename url = file_handler.put_byte_file("java/"+file_name, file.file.read()) return url @router.post("/python/") @web_try() @sxtimeit def put_java_jar( file: UploadFile = File(...),): print("UploadFile-->",file.filename) file_handler = FileHandler("datax") file_name = str(int(time.time()))+'_'+file.filename url = file_handler.put_byte_file("python/"+file_name, file.file.read()) return url @router.post("/jm_job_log/") @web_try() @sxtimeit def put_file( file: UploadFile = File(...),): print("UploadFile-->",file.filename) file_handler = FileHandler("datax") file_name = str(uuid.uuid1()) url = file_handler.put_byte_file("jm_job_log/"+file_name, file.file.read()) return url @router.get("/jm_job_log/") @sxtimeit def get_file( uri: str): file_handler = FileHandler("datax") file = file_handler.get_file(uri) code = 200 if len(file) == 0: code = 404 response = StreamingResponse(io.BytesIO(file), status_code=code, media_type="application/octet-stream") # 在请求头进行配置 response.headers["Content-Disposition"] = "attachment; filename="+uri+".log" return response