尝试使用 Summernote 编辑器将图像 url 保存到数据库时删除样式属性

Posted

技术标签:

【中文标题】尝试使用 Summernote 编辑器将图像 url 保存到数据库时删除样式属性【英文标题】:Style attribute removed when trying to save image url to database using summernote Editor 【发布时间】:2016-08-24 03:15:25 【问题描述】:

我正在使用 Summernote 编辑器将文本和图像保存到 db。目前我在 Codeigniter 中嵌入了summernote,因此我将图像文件上传到服务器,然后检索回 url 并将图像插入到编辑器中。现在根据文档,我们可以调整上传到服务器的图像大小,并可以将 css 应用于图像。

插入代码并应用显示完美结果的 Css。注意数据文件名属性正在保存。

 $('#summernote').summernote('insertImage', objFile, function ($image) 
                        $image.css('width', $image.width() / 3);
                        $image.attr('data-filename', 'retriever');
                    );

一切都很好,除了当我提交表单时,样式属性从 img 标记中删除,其余数据被保存。

我的控制器功能我将数据保存到数据库的位置。

if($this->input->post())
        
            var_dump($_POST);
            $this->data=array(
            'PageID'=>$this->input->post('PageID'),
            'Title'=>$this->input->post('Title'),
            'Description'=>$this->input->post('Description'),
            'Text'=>$this->input->post('Text'),
            'CreatedBy' => 1,
            'CreatedDate' => date('Y-m-d'),
            'UpdatedBy' => 1,
            'IsActive' => 1,
            'IsDeleted' => 0
            );

            $Where=array('PageID'=>$this->input->post('PageID'));
            $Result=$this->model->insert('pagedata',$this->data,'ID',$this->input->post('PageID'),$Where);
            if($Result)
            
                $this->session->set_flashdata('Success',"Page Updated Successfully");
                $Path=previousURL();
                redirect($Path);
            
            else
            
                $this->session->set_flashdata('Error',"Sorry Couldnt Update The Page");
                $Path=previousURL();
                redirect($Path);
            
        

注意 var_dump 我看到样式属性应用于 img 但是当数据到达 db 时样式属性不存在我的问题是 style 标签没有保存在 db 中,而当我上传它们时它应用于图像我的意思是说它存在

【问题讨论】:

【参考方案1】:

您面临的问题是由 CodeIgniter 的 XSS 过滤引起的,它从图像字符串中删除或剥离样式属性,然后将数据传递到数据库。

变化:

$this->input->post('TextAreaName')

$_POST['TextAreaName']

【讨论】:

以上是关于尝试使用 Summernote 编辑器将图像 url 保存到数据库时删除样式属性的主要内容,如果未能解决你的问题,请参考以下文章

如何将通过summernote生成的大型base64图像保存在我的数据库中?

(Summernote) - jQuery 和 Prototype 框架的兼容性

如何设置summernote设置图像始终采用全宽

Summernote - 从服务器中删除图像

Summernote 所见即所得编辑器无法使用 Laravel 5.8 正确呈现数据

Summernote 显示已上传到文件夹的图像