繁体   English   中英

Flask - 将用户上传的图像提供给网页

[英]Flask - Serving user-uploaded images to the webpage

所以我正在开发一个 Flask 应用程序,它几乎是一个允许用户上传其属性图像的属性管理器。 我是 Flask 的新手,以前从未处理过图像。 从大量谷歌搜索中,我了解到有多种方法可以管理 static 文件(如图像)。

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

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

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

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

任何输入或指出我正确的方向将不胜感激。 谢谢!

If you want to store the images in the web server then the best approach for you is to use nginx as proxy in front of flask and let nginx serve the static folder for all the images.

Nginx 对于一个小型网站来说已经足够了。 不要尝试使用 flask 提供文件。 它太慢了。

如果要将图像存储在s3中,则只需将图像名称存储在数据库中的bucket中即可。 您可以告诉 flask 使用 s3 存储桶作为 static 文件夹。 您可以使用 python 中的 boto3 库来访问 s3。 https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html

如果您担心将 s3 存储桶暴露给用户,那么您可以使用云端分发。 它的服务价格更便宜,而且还隐藏了你的水桶。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM