php 如何存储和处理带有文本和多张图片的textarea
How to store and handle textarea with text and multiple pictures in php
我用谷歌搜索并阅读了很多关于此的 post,但没有找到任何方法来回答我的问题。我在这里很新,如果这是一个愚蠢的问题,我深表歉意。
我正在 PHP 中创建一个日志系统,您可以在文本区域中编写日志。我正在使用允许粘贴屏幕截图的 TinyMCE 编辑器,这很重要,因为用户希望用图片显示他们所做的事情。
我遇到的问题是找到一个好的解决方案来跟踪保存 post 时图片在 post 中的位置,然后应该为其他用户显示。 TinyMCE 编辑器将屏幕截图转换为 base64,这保存在我的 LOG-table 的 DESCRIPTION 列中,但我读到这不是一个好的解决方案,因为存储。人们建议将 screenshots/images 存储在单独的 FILE-table.
中
有两件事我觉得很难,需要建议:
1。 Base64 在普通文本之间的描述列中保存为字符串。是不是用PREG_MATCH在这里找图片然后单独存到FILE里的解决办法-table?
2。跟踪 post 中图像顺序的好方法是什么?我正在考虑将它作为描述列中的标记,参考 FILE-table 中的 ex img1.jpg、img2.jpg,然后在 log-[=36= 中添加另一个 ID 列], 不知道这样好不好用
我事先表示歉意,但我还没有找到任何关于如何完成此操作的方法,即使它已经在很多地方完成,甚至在这里!
谢谢!
将图像的 base64 存储在数据库中不是一个好主意。您应该只存储它们的 URL 或可以帮助您检索 URL 的密钥。主要原因:
- base64 字符串使数据库膨胀,您很快就会达到难以维护的大小
- 在 DB 外存储图像时,您可以将它们移动到外部 CDN,这样您的应用程序性能就不会受到对静态文件的处理请求的影响
TinyMCE 允许设置上传 URL 应该 return 图像的实际 URL(而不是 base64):https://www.tiny.cloud/docs/configure/file-image-upload/
关于您的问题:
-
Base64 is saved as a string in my DESCRIPTION-column inbetween the normal text. Is it a solution to use PREG_MATCH to find images here and then store them in separate FILE-table?
这不会再发生了
-
What would be a good way to keep track on the order of the images in the post?
您可以有一个单独的 table 图像和一个连接 table 存储文章和图像之间的关系及其顺序。
article
+--+-----+
|id|title|
+--+-----+
| 1|Foo |
+--+-----+
image
+--+----------------------------------+
|id|url |
+--+----------------------------------+
| 1|https://www.example.com/image1.png|
| 2|https://www.example.com/image2.png|
+--+----------------------------------+
article_image
+----------+--------+-----+
|id_article|id_image|order|
+----------+--------+-----+
| 1| 1| 1|
| 1| 2| 2|
+----------+--------+-----+
我用谷歌搜索并阅读了很多关于此的 post,但没有找到任何方法来回答我的问题。我在这里很新,如果这是一个愚蠢的问题,我深表歉意。
我正在 PHP 中创建一个日志系统,您可以在文本区域中编写日志。我正在使用允许粘贴屏幕截图的 TinyMCE 编辑器,这很重要,因为用户希望用图片显示他们所做的事情。
我遇到的问题是找到一个好的解决方案来跟踪保存 post 时图片在 post 中的位置,然后应该为其他用户显示。 TinyMCE 编辑器将屏幕截图转换为 base64,这保存在我的 LOG-table 的 DESCRIPTION 列中,但我读到这不是一个好的解决方案,因为存储。人们建议将 screenshots/images 存储在单独的 FILE-table.
中有两件事我觉得很难,需要建议:
1。 Base64 在普通文本之间的描述列中保存为字符串。是不是用PREG_MATCH在这里找图片然后单独存到FILE里的解决办法-table?
2。跟踪 post 中图像顺序的好方法是什么?我正在考虑将它作为描述列中的标记,参考 FILE-table 中的 ex img1.jpg、img2.jpg,然后在 log-[=36= 中添加另一个 ID 列], 不知道这样好不好用
我事先表示歉意,但我还没有找到任何关于如何完成此操作的方法,即使它已经在很多地方完成,甚至在这里!
谢谢!
将图像的 base64 存储在数据库中不是一个好主意。您应该只存储它们的 URL 或可以帮助您检索 URL 的密钥。主要原因:
- base64 字符串使数据库膨胀,您很快就会达到难以维护的大小
- 在 DB 外存储图像时,您可以将它们移动到外部 CDN,这样您的应用程序性能就不会受到对静态文件的处理请求的影响
TinyMCE 允许设置上传 URL 应该 return 图像的实际 URL(而不是 base64):https://www.tiny.cloud/docs/configure/file-image-upload/
关于您的问题:
-
Base64 is saved as a string in my DESCRIPTION-column inbetween the normal text. Is it a solution to use PREG_MATCH to find images here and then store them in separate FILE-table?
这不会再发生了
-
What would be a good way to keep track on the order of the images in the post?
您可以有一个单独的 table 图像和一个连接 table 存储文章和图像之间的关系及其顺序。
article
+--+-----+
|id|title|
+--+-----+
| 1|Foo |
+--+-----+
image
+--+----------------------------------+
|id|url |
+--+----------------------------------+
| 1|https://www.example.com/image1.png|
| 2|https://www.example.com/image2.png|
+--+----------------------------------+
article_image
+----------+--------+-----+
|id_article|id_image|order|
+----------+--------+-----+
| 1| 1| 1|
| 1| 2| 2|
+----------+--------+-----+