2024-06-16 12:40:01 发布
网友
所以我做了一个网站,用户可以上传图片库(通常每个图库有几十张图片),在上传之前,它们应该被压缩成一个zip文件(由用户)。我注意到(至少在Linux上)我可以点击一个压缩文件夹,查看其中的图像而不必提取它。有没有可能像这样使用python从zipfiles内部提供图像,因为解压缩是CPU密集型的?在
您可以使用Python使用zipfile模块读取zip文件的内容,该模块允许您动态解压缩和服务文件。这是否是您真正想要做的是另一个问题,因为正如您所提到的,解压文件将比直接从文件系统提供文件更占用CPU资源。在
我猜用户上传的是一个压缩文件,这样他们就可以一次上传多个图片了。在这种情况下,最好是在zip文件上传后解压缩它。然后,您可以将文件解压缩到一个可以使用web服务器将文件作为静态文件提供的位置。在
下面的代码展示了一个示例Flask应用程序,它演示了如何直接从zip文件提供图像。它削减了很多角落,所以不要直接在生产应用程序中使用它!在
要测试应用程序,请安装flask(可能安装到virtualenv中)并运行代码:
virtualenv env env/bin/pip install flask env/bin/python sample_flask_application.py
确保您有一个名为galleries的目录与flask应用程序处于同一级别,并且在galleries目录中有几个.zip包含JPEG的文件。在
galleries
.zip
image
上面的代码可以工作,特别是当你在一个低流量的网站。如果有几个人每天看几张照片,你就没事了。如果你优化上面的代码一点(过期,缓存),那么你仍然可以处理更多的流量。然而,如果你想要最好的性能,那么你需要的是在上传zip文件时解压,并直接使用web服务器(nginx,apache,或任何你正在使用的东西)来提供这些文件。当你有成千上万的来自世界各地的游客时,你也可以开始看content delivery networks。在
您可以使用Python使用zipfile模块读取zip文件的内容,该模块允许您动态解压缩和服务文件。这是否是您真正想要做的是另一个问题,因为正如您所提到的,解压文件将比直接从文件系统提供文件更占用CPU资源。在
我猜用户上传的是一个压缩文件,这样他们就可以一次上传多个图片了。在这种情况下,最好是在zip文件上传后解压缩它。然后,您可以将文件解压缩到一个可以使用web服务器将文件作为静态文件提供的位置。在
示例应用程序
下面的代码展示了一个示例Flask应用程序,它演示了如何直接从zip文件提供图像。它削减了很多角落,所以不要直接在生产应用程序中使用它!在
要测试应用程序,请安装flask(可能安装到virtualenv中)并运行代码:
确保您有一个名为
^{pr2}$galleries
的目录与flask应用程序处于同一级别,并且在galleries
目录中有几个.zip
包含JPEG的文件。在可能的改进
image
函数中缓存图像文件的内容结论
上面的代码可以工作,特别是当你在一个低流量的网站。如果有几个人每天看几张照片,你就没事了。如果你优化上面的代码一点(过期,缓存),那么你仍然可以处理更多的流量。然而,如果你想要最好的性能,那么你需要的是在上传zip文件时解压,并直接使用web服务器(nginx,apache,或任何你正在使用的东西)来提供这些文件。当你有成千上万的来自世界各地的游客时,你也可以开始看content delivery networks。在
相关问题 更多 >
编程相关推荐