Tinymce Vue3+Springboot+Mysql 富文本组件封装支持文件上传,图片上传 !

由于需要上传文件所以前端先封装axios,这个baseUrl tinymce配置也要用到,为了后期统一管理,就写在这里了

import axios from "axios";

export const baseURL = "http://localhost:8080";

export const http = axios.create({
    baseURL: baseURL,
    timeout: 2000,
});

接下来是Tinymce组件

<template>
    <Editor
        api-key="xxxxxxxxxx"  //这里的key去官网注册账号免费获取
        :init="{
        selector: 'textarea',
        toolbar_mode: 'sliding',
        max_height: 800,
        min_height: 400,
        width: '100%',

        //图片上传地址
        images_upload_url: baseURL+'/api/vip/user/upload',
        // 文件上传
        file_picker_types: 'file image media',
        file_picker_callback: handleUploadFile,
        plugins: [
          'autoresize',
          'codesample',
          'emoticons',
          'link',
          'lists',
          'wordcount',
          'table',
          'anchor',
          'autolink',
          'image',
          'media',
          'preview',
          'searchreplace'
        ],
        toolbar: 'undo redo preview styles bold italic emoticons numlist bullist table| image media  link codesample anchor searchreplace',

      }"
    />

    <!-- 隐藏的文件输入框 -->
    <input
        type="file"
        ref="fileInput"
        :accept="acceptFileTypes"
        v-show="false"
        @change="handleFileChange"
    />
</template>

<script setup>
import {ref} from 'vue'
import Editor from '@tinymce/tinymce-vue'
import {baseURL, http} from "../../axios/index.js"

const fileInput = ref(null)
const acceptFileTypes = ref('')
const filePickerCallback = ref(null)  // 用来存储回调函数

function handleUploadFile(callback, value, meta) {
  filePickerCallback.value = callback;  // 存储回调函数

  switch (meta.filetype) {
    case 'file':
   
  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3配合TypeScript(简称TS)环境中实现富文本编辑器上传视频功能,通常需要结合一些前端库如Quill Editor或TinyMCE富文本编辑器,以及一个文件上传组件(比如Element Plus的`el-upload`或Vant的`van-file-uploader`)。以下是基本步骤: 1. 安装依赖: - Quill Editor: `npm install @quilljs/quill` - TypeScript支持:`npm install typescript` - 文件上传组件(假设使用Element Plus):`npm install element-plus` 2. 创建并配置Quill实例,并添加视频上传插件,例如`vue-quill-video-uploader`: ```typescript import { createApp } from 'vue'; import Quill from '@quilljs/quill'; import VideoUploaderModule from 'vue-quill-video-uploader'; const app = createApp(App); app.use(VideoUploaderModule); app.component('q-editor', { // 使用TS定义组件选项 props: { value: String, maxFiles: Number, }, setup(props) { const quillEditor = new Quill(document.getElementById('editor'), { modules: { videoUpload: true, toolbar: ... // 配置所需的工具栏 }, formats: ['video'], videos: { maxFiles: props.maxFiles, } }); return () => ({ editor: quillEditor, }); }, }); ``` 3. 在模板中使用`<q-editor>`组件: ```html <template> <div id="editor"> <q-editor v-model="content" :max-files="uploadLimit"></q-editor> </div> </template> ``` 4. 管理用户输入和上传状态: ```typescript export default { data() { return { content: '', uploadLimit: 5, // 视频上传的最大数量 }; }, methods: { onFileSelected(file) { // 处理上传过程,可以异步调用API或第三方服务 this.$emit('file-added', file); }, }, }; ``` 5. 接收编辑器内容,处理视频上传事件: ```html <script setup> emit('file-added', file); // 当有文件选择时,向父组件发送上传事件 </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值