您的位置:首页 > 游戏 > 游戏 > 软件开发工具手机版_安徽建设工程信息网安管人员查询_东莞网站设计_百度竞价排名价格查询

软件开发工具手机版_安徽建设工程信息网安管人员查询_东莞网站设计_百度竞价排名价格查询

2025/4/5 10:03:15 来源:https://blog.csdn.net/2301_76162638/article/details/146978906  浏览:    关键词:软件开发工具手机版_安徽建设工程信息网安管人员查询_东莞网站设计_百度竞价排名价格查询
软件开发工具手机版_安徽建设工程信息网安管人员查询_东莞网站设计_百度竞价排名价格查询

一、引入依赖

// npm install @vueup/vue-quill@^1.2.0 quill@^1.3.7"@vueup/vue-quill": "^1.2.0","quill": "^1.3.7",

二、在vue文件中使用

<templete><div class="editor-container" v-if="show"><QuillEditor v-model:content="formData.CONT" contentType="html"              :options="editorOptions"  @ready="onEditorReady"  />
</div></templete>
<script setup>import { ref, watch, defineProps } from "vue";import { QuillEditor } from '@vueup/vue-quill';import '@vueup/vue-quill/dist/vue-quill.snow.css';const formData = ref({id:null,CONT: null});const editorOptions = {modules: {toolbar: [['bold', 'italic', 'underline', 'strike'],['blockquote', 'code-block'],['image','link'],  // 自定义图片上传、文件上传[{ 'header': 1 }, { 'header': 2 }],[{ 'list': 'ordered'}, { 'list': 'bullet' }],[{ 'script': 'sub'},{ 'script': 'super' }],]}}// 用于存储 Quill 实例let quillInstance = null;// 图片上传处理函数const handleImageUpload = () => {const input = document.createElement('input');input.type = 'file';input.accept = 'image/*';input.click();input.onchange = async (e) => {console.log('图片图片',e);const file = e.target.files[0];if (file) {try {// 上传图片axiosconst response = await uploadImg(file);const imageUrl = response.data; insertImageToEditor(imageUrl);} catch (error) {console.error('图片上传失败', error);}}};};// 文件上传处理函数const handleFileUpload = () => {const input = document.createElement('input');input.type = 'file';input.accept = '*/*'; // 接受所有类型的文件 .docx,.pdfinput.click();input.onchange = async (e) => {const file = e.target.files[0];if (file) {const maxSize = 10 * 1024 * 1024; // 10MBif (file.size > maxSize) {toast(t('sys.file-error-msg'), 'error');return;}try {const response = await uploadFile(file);const fileUrl = response.data.url; // 假设返回的文件 URL 在 response.datainsertFileToEditor(fileUrl, file.name); // 插入文件链接到编辑器} catch (error) {console.error('文件上传失败', error);}}};};// 将上传的图片插入编辑器const insertImageToEditor = (imageUrl) => {if (quillInstance) {const range = quillInstance.getSelection();quillInstance.insertEmbed(range.index, 'image', imageUrl);}};// 将上传的文件插入编辑器const insertFileToEditor = (fileUrl, fileName) => {if (quillInstance) {const range = quillInstance.getSelection();const link = `<a href="${fileUrl}" target="_blank">${fileName}</a>`;quillInstance.clipboard.dangerouslyPasteHTML(range.index, link); // 插入文件链接}};// 在编辑器准备好后,获取 Quill 实例const onEditorReady = (quill) => {quillInstance = quill; // 保存 quill 实例const toolbar = quill.getModule('toolbar');toolbar.addHandler('image', handleImageUpload); // 替换默认的图片上传行为toolbar.addHandler('link', handleFileUpload); // 添加自定义文件上传处理};</script><style scoped>.editor-container {width: 100%;max-height: 100%;overflow-y: auto;border: 1px solid #d8d8d8;}</style>

三、axios.js

import axios from '~/axios'// 上传图片
export function uploadImg(file) {const formData = new FormData();formData.append('file', file);return axios.post("/upload/img", formData, {headers: {'Content-Type': 'multipart/form-data'}});
}export function uploadFile(file) {const formData = new FormData();formData.append('file', file);return axios.post("/upload/file", formData, {headers: {'Content-Type': 'multipart/form-data'}});
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com