Python Flask-服务用户将图像上载到网页

Python Flask-服务用户将图像上载到网页,python,flask,amazon-s3,flask-sqlalchemy,Python,Flask,Amazon S3,Flask Sqlalchemy,所以我正在开发一个Flask应用程序,它几乎是一个财产管理器,允许用户上传他们财产的图像。我对Flask是新手,以前从未处理过图像。通过大量的谷歌搜索,我了解到有多种方法可以管理静态文件,比如图像 一种方法是允许用户直接将图像上载到文件系统,然后通过使用以下内容检索静态文件夹中的文件位置来显示图像: <img src="static/images/filename.jpg"> 然而,这真的是一种有效的方法吗?因为这意味着存储、生成和存储数据库中每个图像URL

所以我正在开发一个Flask应用程序,它几乎是一个财产管理器,允许用户上传他们财产的图像。我对Flask是新手,以前从未处理过图像。通过大量的谷歌搜索,我了解到有多种方法可以管理静态文件,比如图像

一种方法是允许用户直接将图像上载到文件系统,然后通过使用以下内容检索静态文件夹中的文件位置来显示图像:

<img src="static/images/filename.jpg">

然而,这真的是一种有效的方法吗?因为这意味着存储、生成和存储数据库中每个图像URL的位置?尤其是在部署应用程序时?我发现的另一种方法是使用base64编码并将图像直接存储到数据库中,这听起来也不是很有效

另一种方法是使用AWS S3 bucket,我认为这可能是最好的方法。然后,用户可以将图像直接上传到该bucket,并为该图像分配一个URL。此URL存储在数据库中,然后可用于以类似于文件系统方法的方式显示图像。我对这一点的理解正确吗?有没有更好的办法?是否有类似于django存储的东西可以用来连接Flask到S3


如果您有任何意见或给我指出正确的方向,我将不胜感激。谢谢大家!

如果您希望将图像存储在web服务器中,那么最好的方法是使用nginx作为flask前面的代理,并让nginx为所有图像提供静态文件夹

Nginx对于一个小型网站来说已经足够了。不要试图用烧瓶提供文件。太慢了


如果您想将图像存储在s3中,那么您只需要将图像的名称存储在数据库的bucket中。您可以告诉flask使用s3 bucket作为静态文件夹。您可以使用python中的boto3库访问s3。

如果您关心向用户公开s3 bucket,那么您可以使用cloudfront发行版。这是便宜的价格来服务,也隐藏你的桶