我们知道MySQL字段可以存放纯文本,但是富文本有图片,有标题样式等情况,一般是怎么进行存储的呢?

有一个需求:想要进行富文本进行描述。
但是我们想要使用关系型数据库MySQL存储这个描述文件,请问一般的解决方法是什么样的呢?

举例:富文本编辑器lexical

我们知道MySQL字段可以存放纯文本,但是有图片,有标题样式等情况,一般是怎么进行存储的呢?

阅读 590
5 个回答

这是个好问题,因为我最近也在做富文本。
当前端在富文本进行一系列操作 最终决定将富文本内容传递给后端时。其实是将富文本相关的dom节点做了toString操作,然后将操作后的字符串存储到数据库中。

  • 关于图片存储。富文本中所有的图片必然会上传到服务器中去,最终在富文本引入的肯定是https://开头的远程服务器图片 说白了他也是字符串
  • 样式这些,分富文本类型。有的富文本操作样式时 会直接让样式以style的方式 写在元素上。比如:<p style="color: res;"><strong>加粗文本</strong></> 有的富文本可能会添加css样式,比如:<p class="font-red"><strong>加粗文本</strong></> 保存到数据库中 其实就是这样的代码。当数据库返回给前端回显时 富文本会加载对应的css。样式在数据库中其实也是字符串 样式渲染和后端是耦合的
  • 数据库字符串限制,数据库中关于字符串存储的类型 最大长度我记得是3万左右。所以在保存富文本时 也要注意最大长度限制

不管是富文本还是穷文本都是字符串

直接 varchar 或者 text 存储字符串就行

如果字符串太长,那就存储到 oss/s3 去,然后 mysql 记录一个 oss/s3 的路径就行


富文本是字符串按照富文本协议渲染后的样子,你要存储的不是渲染后的东西,而是渲染前的东西

所谓的富文本其实就是 html , 你把富文本编辑器生成的 html 文本存到数据库就行了, 回显的时候直接通过 v-html 回显就行了

新手上路,请多包涵

生成的html文本,里面图片是url地址。存储文本格式 显示的时候 拿出来 解析成html就可以 div样式就直接解析了 图片就直接显示了

推荐使用直接存储HTML内容的方法

1.创建表结构:

  • 使用LONGTEXT字段存储富文本内容,能够存储较大的HTML内容。
CREATE TABLE rich_text (
    id INT AUTO_INCREMENT PRIMARY KEY,
    content LONGTEXT NOT NULL
);

2.插入数据:

  • 将富文本编辑器生成的HTML内容直接插入到数据库中。
INSERT INTO rich_text (content) VALUES ('<h1>标题</h1><p>这是一个富文本示例,包含图片和样式。</p><img src="https://example.com/image.jpg" alt="示例图片">');

补充

在展示HTML内容时要进行适当的安全处理,防止XSS攻击等安全问题。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏