精华内容
下载资源
问答
  • 富文本编辑器怎么保存怎么提取怎么显示? 图片文字代码片段表情包等等
  • 富文本怎么保存?保存在mysql里面用什么样的类型,还有就是能够获取到富文本的内容(包括标签什么的),用json怎么转换,用过转义也不行?求助啊!!!!
  • Bootstrap富文本组件wysiwyg数据保存到mysql,要怎么做,求php版的案例
  • 以前TextBox只有文本,按字符串保存在数据库,现在富文本编辑框中有图片、表格、以及有字体有颜色的文本,请问怎么存在数据库中以及查询显示出开
  • 富文本编辑器编辑后的文字如何保存到数据库? 如果把html标签过滤掉再保存到数据库,那么富文本编辑器编辑的样式就没有了 如果不过滤,又怕别人输入javascript来破坏? 应该怎么执行?
  • 富文本数据存储及回显

    万次阅读 2018-12-11 14:18:03
    开发者应该都使用过富文本编辑器插件吧,对于富文本插件编辑的内容我们需要怎么存储及回显呢,我来简单介绍下。 存储:1、文件存储,将富文本数据保存成html文件,然后将文件上传到文件服务器;2、直接将html内容...

    开发者应该都使用过富文本编辑器插件吧,对于富文本插件编辑的内容我们需要怎么存储及回显呢,我来简单介绍下。

    存储:1、文件存储,将富文本数据保存成html文件,然后将文件上传到文件服务器;2、直接将html内容存储到数据库中。这篇主要介绍第二种。

    第一步:获取富文本编辑器内容,我这里就手动编写了一段很小的html数据。

    一个图片标签,里面放着一个图片链接,html里面双引号被转义了,会与字符串双引号冲突,使用spring mvc一般不需要手动转义,框架会帮我们处理。

    第二步:处理特殊标签,我使用的是mysql数据库,像尖括号这种特殊表会被数据库误会,也是为了防止被人恶意在html内容中嵌入脚本代码。

    这里使用的是org.springframework.web.util.HtmlUtils这个工具类,属于Springboot web包里。

    其中htmlEscapeHex方法是将所有特殊字符转义为对应的数字以十六进制格式引用,htmlEscape方法是将所有特殊字符转义到对应的本质引用,htmlEscapeDecimal方法是将所有特殊字符以十进制格式转义到对应的数字引用。具体是什么样子的呢,来看下控制台结果。

    第三步,存储,一般富文本内容都是很大的,所以对应数据库字段我们应该选用longtext类型,如果选用varchar这些有长度的字段,可能会报data too long错误。

    第四步,读取。

    第五步,解析,使用的也是HtmlUtils这个工具类中的解析方法。

    解析只需要使用到一个htmlUnescape方法。

    可以看到控制台结果,完美解析。将解析后的html内容返回到前端,回显到富文本框里面就行了。

    欢迎指正或者提出更好的建议。

    展开全文
  • 目前的方案是用Kindeditor编辑器或者UEditor在线编辑器编辑内容,然后把里面的内容,按原格式保存到word. 现在的问题是,图片无法保存到word中,还有表格的样式有问题。 百度了很久,都没有比较理想的方法。求助...
  • ,那么提取出来展示样式都是一样的吗? 存进去的不都是文字吗?怎么区别样式了?
  • 问题一,从前富文本上上传保存html图片,里面的img标签的src路径一切正常,在富文本编辑杠里正常,单独访问也正常,但如里从admin管理页面看,和从前端页面展示看,实际代码的正常,但指向的src前面会被拼接上当前...

    你好,

    我最近一做一个小项目,遇到一些问题,请教!

    问题一

    ,从前富文本上上传保存html图片,里面的img标签的src路径一切正常,在富文本编辑杠里正常,单独访问也正常,但如里从admin管理页面看,和从前端页面展示看,实际代码的正常,但指向的src前面会被拼接上当前页面的url路径,比如:

    当前端页面地址是:127.0.0.1:8000/project_detail/1

    图片的正常src是:src="media/project_image/123.png",

    实际图片src会指向:src="127.0.0.1:8000/project_detail/media/project_image/123.png",

    当前admin的页面地址是:

    127.0.0.1:8000/admin/sore/project/22

    实际图片src会指向:src="127.0.0.1:8000/admin/sore/project/22/media/project_image/123.png",

    8be19544d7d305b4cf36e0737fe260f5.png

    6dab42c95548438028be13b74d1dbf52.png

    问题二

    从admin页面富文本上传的图片路径前全部加上了../../../../,全指向的又是正常的图片

    比如:

    标签里显示是img src="../../../../static/media/project_image/5.png"

    实际指向img src="static/media/project_image/5.png"

    5bc272cd975c68fc1271e3a45344a4d6.png

    展开全文
  • 1,前端嵌入编辑器,可以编辑内容。 2,后端保存内容。 3,前端怎么展示内容呢? 参考资料: ...JSP嵌入ueditor、umeditor富文本编辑器 https://www.cnblogs.com/DOLFAMINGO/p/9548571.html ...

     

    1,前端嵌入编辑器,可以编辑内容。

    2,后端保存内容。

    3,前端公告区,怎么展示内容呢?

     

     

    参考资料:

    JSP嵌入ueditor、umeditor富文本编辑器
    https://www.cnblogs.com/DOLFAMINGO/p/9548571.html

     

     

    展开全文
  • 富文本添加图片保存到OSS也是这几天项目中刚刚遇到的,前期没怎么想下决心搞一搞,说实话呢也是不会搞,今天呢终于是一点一点的给整了出来,在这里呢与大家分享一下,网上可能有一些Vue整合Wa...
        

    感谢

    • 首先要感谢网上一些大佬分享的部分代码给我的工作提供了一些参考,让我能够把有效的代码整合到一起,实现想要的功能,在这里与大家分享!感谢!

    功能截图

    clipboard.png

    • 富文本添加图片保存到OSS也是这几天项目中刚刚遇到的,前期没怎么想下决心搞一搞,说实话呢也是不会搞,今天呢终于是一点一点的给整了出来,在这里呢与大家分享一下,网上可能有一些Vue整合Wangeditor上传图片的文章,大家呢可以参考着看!废话不多说,直接上项目

    项目参考

    码云地址

    项目结构解析与部分代码展示

    • 必要的静态文件

    clipboard.png

    clipboard.png

    • wangeditor编辑器搭建 npm先下载就不用说了吧
    <template lang="html">
      <div class="editor">
        <div ref="toolbar" class="toolbar">
        </div>
        <div ref="editor" class="text">
        </div>
      </div>
    </template>
    
    <script>
    import E from 'wangeditor'
    import {UPLOADER} from '@t/utils'
    export default {
        name: 'Editorbar',
        data() {
            return {
                editor: null,
                info_: null,
                UPLOADER,
            }
        },
        model: {
            prop: 'value',
            event: 'change',
        },
        props: {
            value: {
                type: String,
                default: '',
            },
            isClear: {
                type: Boolean,
                default: false,
            },
        },
        watch: {
            isClear(val) {
                // 触发清除文本域内容
                if (val) {
                    this.editor.txt.clear()
                    this.info_ = null
                }
            },
            value(val) {
                // 使用 v-model 时,设置初始值
                this.editor.txt.html(val)
            },
        },
        mounted() {
            this.seteditor()
            this.editor.config.customUploadInit = this.UPLOADER(this.editor).init()
        },
        methods: {
            seteditor() {
                this.editor = new E(this.$refs.toolbar, this.$refs.editor)
                // 配置菜单
                this.editor.customConfig.menus = [
                    'head', // 标题
                    'bold', // 粗体
                    'fontSize', // 字号
                    'fontName', // 字体
                    'italic', // 斜体
                    'underline', // 下划线
                    'strikeThrough', // 删除线
                    'foreColor', // 文字颜色
                    'backColor', // 背景颜色
                    'link', // 插入链接
                    'list', // 列表
                    'justify', // 对齐方式
                    'quote', // 引用
                    'emoticon', // 表情
                    'image', // 插入图片
                    'table', // 表格
                    // 'video', // 插入视频
                    'code', // 插入代码
                    'undo', // 撤销
                    'redo', // 重复
                ]
    
                this.editor.customConfig.onchange = html => {
                    this.info_ = html // 绑定当前逐渐地值
                    this.$emit('change', this.info_) // 将内容同步到父组件中
                }
    
                // 创建富文本编辑器
                this.editor.create()
            },
        },
    }
    </script>
    
    <style lang="css">
    .editor {
        width: 80%;
        margin: 0 auto;
    }
    .toolbar {
        border: 1px solid #ccc;
    }
    .text {
        border: 1px solid #ccc;
        height: 500px;
    }
    </style>
    • 上传OSS方法的封装

    clipboard.png

    const OSSConfig = {
        ossParams: {
            key: '', // key后面有用,先默认设空字符串
            success_action_status: '200', // 默认200
            accessKeyId: '你的KeyID',
            accessKeySecret: '你的Key',
            bucket: 'Bucket',
            host: 'OSS上传地址',
        },
    }
    
    var g_object_name, new_multipart_params, suffix
    
    // ==========================================================这一串是为了文件的名字?====================================================//
    function random_string(len) {
        len = len || 32
        var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'
        var maxPos = chars.length
        var pwd = ''
        for (let i = 0; i < len; i++) {
            pwd += chars.charAt(Math.floor(Math.random() * maxPos))
        }
        return pwd
    }
    
    function get_suffix(filename) {
        let pos = filename.lastIndexOf('.')
        let fname = ''
        if (pos != -1) {
            fname = filename.substring(pos)
        }
        return fname
    }
    
    function calculate_object_name(filename) {
        suffix = get_suffix(filename)
        g_object_name = OSSConfig.ossParams.key + random_string(20) + suffix
        return ''
    }
    
    function set_upload_param(up, filename, ret) {
        g_object_name = OSSConfig.ossParams.key
        if (filename != '') {
            suffix = get_suffix(filename)
            calculate_object_name(filename)
        }
        var policyText = {
            expiration: '2020-01-01T12:00:00.000Z', //设置该Policy的失效时间,超过这个失效时间之后,就没有办法通过这个policy上传文件了
            conditions: [
                ['content-length-range', 0, 1048576000], // 设置上传文件的大小限制
            ],
        }
        var policyBase64 = Base64.encode(JSON.stringify(policyText))
        let message = policyBase64
        var bytes = Crypto.HMAC(Crypto.SHA1, message, OSSConfig.ossParams.accessKeySecret, {asBytes: true})
        var signature = Crypto.util.bytesToBase64(bytes)
        new_multipart_params = {
            key: g_object_name,
            policy: policyBase64,
            OSSAccessKeyId: OSSConfig.ossParams.accessKeyId,
            success_action_status: 200, //让服务端返回200,不然,默认会返回204
            bucket: OSSConfig.ossParams.bucket,
            signature: signature,
        }
    
        up.setOption({
            url: OSSConfig.ossParams.host,
            multipart_params: new_multipart_params,
        })
    
        up.start()
    }
    // ==========================================================这一串是为了文件的名字?====================================================//
    
    var UPLOADER = editor => {
        let uploader = new plupload.Uploader({
            runtimes: 'html5,flash,silverlight,html4',
            browse_button: editor.imgMenuId,
            multi_selection: true,
            auto_start: true,
            // 我也不知道这是干啥的 以后慢慢研究,注释掉倒是没啥影响
            // flash_swf_url: '../../public/lib/plupload-2.1.2/js/Moxie.swf',
            // silverlight_xap_url: '../../public/lib/plupload-2.1.2/js/Moxie.xap',
            url: OSSConfig.ossParams.host,
    
            filters: {
                mime_types: [
                    //只允许上传图片和zip,rar文件
                    {title: 'Image files', extensions: 'jpg,jpeg,gif,png,bmp'},
                    {title: 'video files', extensions: 'mp4,3gp'},
                ],
                max_file_size: '10mb', //最大只能上传10mb的文件
                prevent_duplicates: false, //不允许选取重复文件
            },
    
            init: {
                PostInit: function() {
                    set_upload_param(uploader, '', false)
                    return false
                },
    
                BeforeUpload: function(up, file) {
                    set_upload_param(up, file.name, true)
                },
    
                FilesAdded: function(up) {
                    up.start() //选择完后直接上传
                },
    
                FileUploaded: function(up, file, info) {
                    if (info.status == 200) {
                        var file_type = file.type
                        var is_image = file_type.indexOf('image')
                        var is_video = file_type.indexOf('video')
                        if (is_image > -1) {
                            editor.cmd.do(
                                'insertHtml',
                                '<img src="' +
                                    OSSConfig.ossParams.host +
                                    '/' +
                                    g_object_name +
                                    '" style="width: auto; max-width:100%;"/>',
                            )
                        }
    
                        // if (is_video > -1) {
                        //     editor.cmd.do(
                        //         'insertHtml',
                        //         '<video controls src="' +
                        //             _this.ossParams.host +
                        //             _this.g_object_name +
                        //             '" style="width: auto; max-width:100%;"></video>',
                        //     )
                        // }
                    } else {
                        alter(info.response)
                    }
                },
    
                Error: function(up, err) {
                    if (err.code == -600) {
                        alter('\n选择的文件太大了,可以根据应用情况,在upload.js 设置一下上传的最大大小')
                    } else if (err.code == -601) {
                        alter('\n选择的文件后缀不对,可以根据应用情况,在upload.js进行设置可允许的上传文件类型')
                    } else if (err.code == -602) {
                        alter('\n这个文件已经上传过一遍了')
                    } else {
                        alter('\nError xml:' + err.response)
                    }
                },
            },
        })
        return uploader
    }
    
    export {UPLOADER}
    
    • 调用

    clipboard.png

    mounted() {
            this.seteditor()
            this.editor.config.customUploadInit = this.UPLOADER(this.editor).init()
        },

    总结

    整个东西呢历时几个小时,代码没做太多的优化,希望大家可以提示宝贵意见~谢谢!

    展开全文
  • 富文本添加图片保存到OSS也是这几天项目中刚刚遇到的,前期没怎么想下决心搞一搞,说实话呢也是不会搞,今天呢终于是一点一点的给整了出来,在这里呢与大家分享一下,网上可能有一些Vue整合Wangeditor上传图片的文章...
  • 是以富文本的方式保存的么?有没有人了解? 是以富文本的方式保存的么?有没有人了解? 是以富文本的方式保存的么?有没有人了解?
  • 相信大家都是把Ueditor在前端部署好后,图片上传不知道怎么弄,我也是,研究分析很多篇文章,得出以下步骤可行 配置好在/Ueditor/jsp/config.json里的imageUrlPrefix,到时后端返回图片保存的访问url时,Ueditor会...
  • 很多时候我们用一些管理系统的时候,发布新闻、公告等文字类信息时,希望能很快的将word里面的内容直接粘贴到富文本编辑器里面,然后发布出来。减少排版复杂的工作量。 下面是借用百度doc 来快速实现这个word 粘贴...
  • 很多时候我们用一些管理系统的时候,发布新闻、公告等文字类信息时,希望能很快的将word里面的内容直接粘贴到富文本编辑器里面,然后发布出来。减少排版复杂的工作量。 下面是借用百度doc 来快速实现这个word 粘贴...
  • 很多时候我们用一些管理系统的时候,发布新闻、公告等文字类信息时,希望能很快的将word里面的内容直接粘贴到富文本编辑器里面,然后发布出来。减少排版复杂的工作量。 下面是借用百度doc 来快速实现这个word 粘贴...
  • Chrome+IE默认支持粘贴剪切板中的图片,但是我要发布...我希望打开Word或者WPS文档后,复制内容然后直接粘贴到富文本编辑器中,编辑器自动将图片批量上传到服务器中,无论文档中有多少张图片,编辑器都全部自动上传,不
  • Chrome+IE默认支持粘贴剪切板中的图片,但是我要发布...我希望打开Word或者WPS文档后,复制内容然后直接粘贴到富文本编辑器中,编辑器自动将图片批量上传到服务器中,无论文档中有多少张图片,编辑器都全部自动上传,不
  • Chrome+IE默认支持粘贴剪切板中的图片,但是我要发布...我希望打开Word或者WPS文档后,复制内容然后直接粘贴到富文本编辑器中,编辑器自动将图片批量上传到服务器中,无论文档中有多少张图片,编辑器都全部自动上传,不
  • tinymce是很优秀的一款富文本编辑器,可以去官网下载。https://www.tiny.cloud 这里分享的是它官网的一个收费插件powerpaste的旧版本源码,但也不影响功能使用。 ... 以vue为例说明: 将tinymce下载后放到static目录...
  • 因为公司业务需要支持IE8 ,网上其实有很多富文本框,效果都很好。 例如www.wangEditor.com 但试了一圈都不支持IE8 。 所以回到Ueditor,由于官方没有维护,新的neuditor 也不知道什么时候能支持word自动转存,...
  • 因为公司业务需要支持IE8 ,网上其实有很多富文本框,效果都很好。 例如www.wangEditor.com 但试了一圈都不支持IE8 。 所以回到Ueditor,由于官方没有维护,新的neuditor 也不知道什么时候能支持word自动转存,...
  • 因为公司业务需要支持IE8 ,网上其实有很多富文本框,效果都很好。 例如www.wangEditor.com 但试了一圈都不支持IE8 。 所以回到Ueditor,由于官方没有维护,新的neuditor 也不知道什么时候能支持word自动转存,...
  • tinymce是很优秀的一款富文本编辑器,可以去官网下载。https://www.tiny.cloud 这里分享的是它官网的一个收费插件powerpaste的旧版本源码,但也不影响功能使用。 ... 以vue为例说明: 将tinymce下载后放到static目录...
  • (续上文) 五、文本文件 1、纯文本 常用的txt文件就是纯文本文件,只能保存字符,比如数字、字母和符号。不能保存图片,字体没有颜色等等。它比较单纯。 纯文本中的内容是以二进制...2、富文本 常用的word文档就是...
  • 使用Jsoup过滤HTML标签,获取纯文本

    万次阅读 2017-12-06 21:33:17
    通常情况下,把HTML富文本内容保存到数据库字段时,会自带一些HTML标签,然后将这些内容再次显示到网页上时,就能够保持文本在富文本中编辑时的HTML格式。 这种做法毫无疑问是没有问题的,但有的时候,我们需要将...
  • nicEditor保存到数据库

    2017-03-28 10:31:44
    创建了文本框,但是编辑了数据以后,要怎么保存这些数据的编辑后的格式呢? 我猜想的是不是ne这个对象有什么方法,可以获取到带格式的文本内容(或者是有html代码的文本), 然后在保存到数据库中呢? 我找了一下这...
  • 首先此文章借鉴了[学习计划 (3,4) - WKWebview 实现浏览大图并保存本地]...使用WKWebView加载的富文本中的图片,怎么能做到点击图片识别呢 首先,不能有这种 js 方法执行 //禁止点击.

空空如也

空空如也

1 2 3
收藏数 56
精华内容 22
关键字:

富文本怎么保存