富文本信息加密存储
这是因为你拼sql语句时 导致了 sql语句语法错误导致的问题
也就是 单引号 和双引号 导致的问题
最好的解决方案就是 对Str2里的内容进行转义把所有的 双引号 都替换成 其他字符
Ⅱ 如何读取富文本中的内容然后存到mongodb中
界面代码
<img src="@ViewData["html"]" />
作为测试代码,我就在界面上面写了一个image框,用来显示从MongoDB数据库中读取出来的图片。
HomeController代码
public ActionResult Index() { ViewData["html"] = "/MongodbHelp/ProcessRequest?actions=DOWNLOAD&value=lf.png"; return View(); }
后面的代码组成相信凡是接触过MVC的读者都能看懂这个东西,后面我就直接写死了一个图片的名称。
MongodbHelpController
连接数据库的方法
private static MongoDatabase DB; public static string fileTable = "fs";//数据库中的表名称 //Sets up the environment. public void Init() {
//我们可以在配置文件中读取 string ConnectionString = "127.0.0.1"; //ConfigurationManager.AppSettings["mondoDbConnection"]; if (String.IsNullOrEmpty(ConnectionString)) { throw new ArgumentNullException("Connection string not found."); } MongoServerSettings mongoSetting = new MongoServerSettings(); mongoSetting.MaxConnectionPoolSize = 15000;//设定最大连接池 mongoSetting.WaitQueueSize = 500;//设定等待队列数 mongoSetting.Server = new MongoServerAddress(ConnectionString, 27017); int count = MongoServer.MaxServerCount; MongoServer server = MongoServer.Create(mongoSetting);//创建连接数据文件 DB = server.GetDatabase("local");//创建数据库连接 }
用来判断我们进行的方法是哪一个,上传文件还是下载文件,在这只给大家介绍下载的方法;
public void ProcessRequest() { Init();//initialize the mongo string action = Request.QueryString["actions"]; switch (action) { case "LIST": GetFileList(); break; //获取文件列表 case "UPLOAD": Upload(); break; //上传文件 case "DELETE": Delete(); break;//删除文件 case "DOWNLOAD": DownFile(); break; //下载文件 } }
下载文件的类
//下载文件 public void DownFile() { string filename = Request.QueryString["value"]; Response.ContentType = "application/octet-stream"; //context.Response.ContentType = "audio/mpeg"; Response.AddHeader("Content-Disposition", "attachment; filename=" + filename); MongoGridFSSettings fsSetting = new MongoGridFSSettings() { Root = fileTable }; MongoGridFS fs = new MongoGridFS(DB, fsSetting); MongoGridFSFileInfo gfInfo = new MongoGridFSFileInfo(fs, filename); //方法一,很简洁 fs.Download(Response.OutputStream, filename); Response.End(); }
通过这几段代码,我们就轻松的完成MongoDB数据的文件读取操作。
Ⅲ 富文本编辑器内容在mysql数据库以什么类型保存,在程序用是用string类型吗
程序里面用 string,在mysql里面,一般用 text,如果内容一般不会太多,用 varchar 也是可以的~
Ⅳ draft-js 怎么存储内容
富文本内容的结构化存储一个显而易见的好处是表现力更强
以用 Python 判断富文本中有没有图片为例。用传统的 HTML 方式存储富文本:
# 依赖用来渲染页面的 HTML tag 及 CSS class,或许应该写个更严谨的正则表达式,如果要取图片地址之类的元信息则更麻烦
hasImage = '<img class="RichText-image"' in richContent
Draft.js:
# 语义清晰,和渲染逻辑无关
hasImage = any(entity.type == 'image' for entity in richContent.entityMap)
富文本内容的结构化存储的另一个好处是内容的存储和渲染逻辑分离
分离能够带来更高的灵活性
例如知乎站上用 <a href="/people/s0s0">@李奇</a> 来存储富文本中对 urlToken 为 s0s0 的用户的 mention,当加入支持用户修改自定义的 urlToken 的功能后,如果 urlToken 被修改,那么原先的链接就失效了。解决方案是把链接的存储方式改为 <a href="memberHash">@李奇</a>,其中 memberHash 是唯一的不变的值,为此我们不得不支持 /people/:memberHash 形式的个人主页链接。
另一种思路是存 memberHash,在渲染之前根据 member_hash 去读取现在的 urlToken。在 Draft.js 中为 mention 创建 entity 如下:
{
type: 'mention',
data: {
menberHash: 'abc',
}
}
存储和渲染的逻辑分离更容易保证渲染结果的确定性
以一段既加粗又倾斜的文本为例,对于一般的基于 HTML 存储的富文本编辑器,如果先倾斜后加粗,很可能得到这个结果:
<b><i>我被加粗了,也被倾斜了</i></b>
如果先加粗后倾斜,则是:
<i><b>我被加粗了,也被倾斜了</b></i>
Draft.js:
{
"inlineStyleRanges": [
{"offset": 0, "length": 5, "style": "BOLD"},
{"offset": 0, "length": 5, "style": "ITALIC"}
]
}
<i> 和 <b> 标签的顺序由渲染逻辑中决定,我们甚至可以改用 CSS class 或者 inline style 来添加样式(Draft.js 默认的做法)。
内容的存储和渲染逻辑分离带来的另一个可能的好处是多端复用
比如在 app 端做原生渲染,结构化数据比 HTML 更利于解析。