FastAPI 用于文件上传,minio 用于存储和共享链接

FastAPI for file upload and minio for storage and share link

提问人:Princy 提问时间:11/4/2023 最后编辑:Brian Tompsett - 汤莱恩Princy 更新时间:11/4/2023 访问量:65

问:

@router.post("/upload_image",tags=['Upload Endpoints'])
async def upload_profile(file: UploadFile, user: User =Depends(get_current_user),db:Session=Depends(get_db)):
    '''Endpoint for profile image'''
    if is_profile_acceptable(file.filename):
        f = await file.read()
        if len(f) >= 5242880 :
            raise HTTPException(400,detail="File size exceeds 5 Mb!")

        extension = file.filename.split('.')[-1]
        file_name=file.filename.split('.')[-2]

        profile = "profile"
        up_name = f"{file_name}-{profile}.{extension}"

        file = io.BytesIO(f)
        profile_image = upload_file(file ,up_name,'profile-image',2)
        user = db.query(User).filter(User.id == user.id).first()
        if not user:
                return {"message": "User not found"}

        user.profile_minio_url = profile_image
        db.commit()
        # User.profile_minio_url = profile_image
        return JSONResponse(content={"url": profile_image})
    
    else:
        return JSONResponse({"detail":"Invalid file format"})

我已经编写了一个用于文件上传的端点,它将从 minio 放置和获取 URL,但前端团队将如何处理它。我想知道这是返回 URL 的方法,前端团队将毫无问题地获得它。

python angular fastapi minio

评论

0赞 Sidiox 11/5/2023
这有点含糊不清,因为我们不知道您的前端依赖于什么或构建什么,但是,可能要考虑的主要事情之一是 Minio url,该资源是否实际上无需通过 API 身份验证即可访问,“外部”。
1赞 Chris 11/5/2023
您可能会发现这个答案和这个答案很有帮助

答: 暂无答案