php - 以安全、私密和可扩展的方式将用户图像保存在服务器中的最佳方法是什么?
问题描述
我目前正在使用 PHP Lumen(类似于 Laravel,但没有前端部分)、MySQL 和 Ionic 框架开发一个社交网络。
以只有用户可以获取的方式保存用户图像的最佳方法是什么?
我需要保存用户个人资料图片,但我知道随着应用程序的扩展,将图像的 base64 格式保存在数据库中并不是一件好事。所以,我的问题是:我是否应该按原样保存图像,但使用一些哈希更改名称,与文件夹相同,以便只有用户可以获得正确的路径并将该路径提供给前端?
或者,是否可以将图像保存到只有服务器可以访问的文件夹中,并使用用户会话令牌获取文件的正确 url?我应该加密图像吗?是否需要太多时间和处理?
解决方案
首先,您不应该使用 Lumen 来构建社交网站。Lumen 是轻量级的,它缺少 Laravel 提供的核心实用程序。
现在回到您的问题,您必须league/flysystem
在项目中使用并使用存储 API。您可能必须处理 Lumen 中的配置,以使文件系统为您正常工作。
就像 Laravel 一样,您应该将 storage 文件夹保留在 public 文件夹之外,并符号链接 storage 的 public directory 应用程序的 public 目录。在 Laravel 中,您可以通过php artisan storage:link
命令来实现结果。
现在,一旦正确配置了存储,当目录被符号链接时,公共文件将可以直接访问,您可以决定如何访问私有文件。Flysystem 为您从磁盘读取和写入内容提供了极大的灵活性。
推荐阅读
- mysql - 如何在 SQL 中创建自联接视图
- javascript - 检查数组javascript中是否存在值
- python - django base.html扩展为homepage.html,出现静态图片,但是home.css不起作用
- tensorflow - 使用 keras 在终端中的应用程序错误
- c# - Asp.net Core 2.2 SendGrid 动态模板集成
- c++ - 在 linux 上调试巨大的 C++ 项目
- graphql - 使用 GraphQL 和 IssueFilters 获取特定里程碑中的 GitHub 问题
- database - NoSQL 将集合数据插入另一个
- javascript - 比较两个数组
- javascript - Discord.js 设置间隔功能未激活。需要确认原因