首页 > 解决方案 > 以安全、私密和可扩展的方式将用户图像保存在服务器中的最佳方法是什么?

问题描述

我目前正在使用 PHP Lumen(类似于 Laravel,但没有前端部分)、MySQL 和 Ionic 框架开发一个社交网络。

以只有用户可以获取的方式保存用户图像的最佳方法是什么?

我需要保存用户个人资料图片,但我知道随着应用程序的扩展,将图像的 base64 格式保存在数据库中并不是一件好事。所以,我的问题是:我是否应该按原样保存图像,但使用一些哈希更改名称,与文件夹相同,以便只有用户可以获得正确的路径并将该路径提供给前端?

或者,是否可以将图像保存到只有服务器可以访问的文件夹中,并使用用户会话令牌获取文件的正确 url?我应该加密图像吗?是否需要太多时间和处理?

标签: phpmysqllaravelstorelumen

解决方案


首先,您不应该使用 Lumen 来构建社交网站。Lumen 是轻量级的,它缺少 Laravel 提供的核心实用程序。

现在回到您的问题,您必须league/flysystem在项目中使用并使用存储 API。您可能必须处理 Lumen 中的配置,以使文件系统为您正常工作。

就像 Laravel 一样,您应该将 storage 文件夹保留在 public 文件夹之外,并符号链接 storage 的 public directory 应用程序的 public 目录。在 Laravel 中,您可以通过php artisan storage:link命令来实现结果。

现在,一旦正确配置了存储,当目录被符号链接时,公共文件将可以直接访问,您可以决定如何访问私有文件。Flysystem 为您从磁盘读取和写入内容提供了极大的灵活性。


推荐阅读