vue使用kindeditor富文本编辑器上传图片时跨域解决

当我们使用kindeditor富文本编辑器的时候会出现iframe跨域问题

可以通过重定向来解决

第一步:先在项目中创建一个redirect的vue组件

<template>
      <div class="redirect">

      </div>
</template>

<script>
    export default {
        name: "redirect",
      data(){
          return{
            dataObjectUrl:''
          }
      },
      created(){
          this.upload_callback();
      },
      methods:{
        getParameter() {
          // 获取到重定向发送过来的信息
          var uri = decodeURI(window.location.search);
          //有%3A之类的乱码,需要用正则处理一下
          uri = uri.replace(/%3A/g, ":").replace(/%2F/g, "/").replace(/%3F/g, "?").replace(/%3D/g, "=").replace(/%26/g, "&");
          //具体对数据的处理,看后台传过来的类型,最后得到一个json就可以,其中有两个属性,成功的时候,一个error,一个url
          return uri.length > 5 ? JSON.parse(uri.substring(3)) : null
        },
        upload_callback() {
          var obj = this.getParameter();
          var dataObject;
          // 当error为0的时候,说明上传成功
          if(obj.error == 0){
            dataObject = {"error": obj.error, "url": obj.url};
          }else{
            dataObject = {"error": 1, "message": "错误信息"};
          }
          var data =  JSON.stringify(dataObject)
          //这里是对数据处理之后,走完这个js会回到kindeditor的js中,继续执行,注意如果后台返回了url,但是弹窗提醒是undef,
          // 可能是因为,自己这边传递接受的error的值不是number类型
          // ,为kindeditor源码里面对error的值的判断都是用的全等,值和类型都相等的情况
          document.getElementsByTagName("body")[0].innerHTML = '<pre>' + data + '</pre>';
        },
      }
    }
</script>

<style scoped>

</style>

调用kindeditor的代码

 <editor ref="editor" id="editor_id" height="300px" width="100%" :content.sync="editorText"
                :afterChange="afterChange()"
              cssPath ='../../static/kindeditor/plugins/code/prettify.css'
              uploadJson="http://192.168.100.157:8080/fileUpload"
              :loadStyleMode="true"
              :allowFileManager="true"
              @on-content-change="onContentChange"></editor>

接下来就是后台需要配合,发起上传请求的时候,重定向到我们前端的redirect文件就可以,后台配合请参考https://my.oschina.net/u/3774949/blog/3111248

可以参考一下这位好心人的  https://www.jianshu.com/p/27e9ed4e7ff8

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
vue2quill是一个基于Vue.js和Quill.js实现的富文本编辑器组件。它支持上传图片和视频,但需要你自己实现上传的逻辑。 对于上传视频的实现,你可以使用一些常用的视频上传方案,比如通过后端接口实现文件上传、使用第三方云存储服务等。在vue2quill中,你需要做的就是通过配置参数来指定上传视频的接口地址或者上传视频的回调函数。 以下是一个使用vue2quill上传视频的示例代码: ``` <template> <div> <quill-editor v-model="content" :options="editorOption" @image-added="onImageAdded" @video-added="onVideoAdded"></quill-editor> </div> </template> <script> import QuillEditor from 'vue-quill-editor' export default { components: { QuillEditor }, data () { return { content: '', editorOption: { modules: { toolbar: [ ['bold', 'italic', 'underline', 'strike'], // toggled buttons ['blockquote', 'code-block'], [{ 'header': 1 }, { 'header': 2 }], // custom button values [{ 'list': 'ordered' }, { 'list': 'bullet' }], [{ 'script': 'sub' }, { 'script': 'super' }], // superscript/subscript [{ 'indent': '-1' }, { 'indent': '+1' }], // outdent/indent [{ 'direction': 'rtl' }], // text direction [{ 'size': ['small', false, 'large', 'huge'] }], // custom dropdown [{ 'header': [1, 2, 3, 4, 5, 6, false] }], [{ 'color': [] }, { 'background': [] }], // dropdown with defaults from theme [{ 'font': [] }], [{ 'align': [] }], ['clean'], // remove formatting button ['link', 'image', 'video'] // link and image, video ] }, placeholder: '请输入正文', theme: 'snow' } } }, methods: { onImageAdded (file, callback) { // 处理图片上传 let formData = new FormData() formData.append('file', file) axios.post('/upload/image', formData) .then(res => { callback(res.data.url) }) }, onVideoAdded (file, callback) { // 处理视频上传 let formData = new FormData() formData.append('file', file) axios.post('/upload/video', formData) .then(res => { callback(res.data.url) }) } } } </script> ``` 在上述代码中,我们通过配置QuillEditor组件的options参数来设置富文本编辑器的选项,包括工具栏、占位符等。在onImageAdded和onVideoAdded回调函数中,我们可以处理上传图片和上传视频的逻辑,并通过callback函数将上传后的图片或视频的地址返回给富文本编辑器组件。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值