vue3 tinymce获取到的html文本上传到后端node服务器 报错413请求体过大怎么解决 如果HTML文本非常大,怎么拆分为多个请求进行上传 前后端代码

时间: 2024-03-11 13:50:33 浏览: 22
前端代码: ```vue <template> <div> <h1>上传HTML文本</h1> <div class="editor" ref="editor"></div> <button @click="submitHtml">提交</button> </div> </template> <script> import { ref, onMounted } from 'vue'; import tinymce from 'tinymce/tinymce'; import 'tinymce/themes/silver/theme'; import 'tinymce/plugins/paste'; import 'tinymce/plugins/link'; import 'tinymce/plugins/image'; export default { name: 'HtmlUploader', setup() { const editorRef = ref(null); onMounted(() => { // 初始化TinyMCE编辑器 tinymce.init({ selector: '.editor', plugins: ['paste', 'link', 'image'], toolbar: 'undo redo | bold italic | alignleft aligncenter alignright | link image', height: 500, paste_data_images: true, images_upload_handler: function (blobInfo, success, failure) { // 处理图片上传 // ... }, setup: editor => { editorRef.value = editor; } }); }); const submitHtml = () => { // 获取HTML文本 const html = editorRef.value.getContent(); // 上传HTML文本到服务器 // ... }; return { editorRef, submitHtml }; } }; </script> ``` 后端代码: ```javascript const express = require('express'); const app = express(); const multer = require('multer'); const path = require('path'); const fs = require('fs'); // 设置上传文件的临时目录 const upload = multer({ dest: 'uploads/' }); // 处理上传请求 app.post('/upload', upload.single('html'), (req, res) => { // 获取上传的HTML文件 const htmlFile = req.file; // 读取HTML文件内容 const htmlContent = fs.readFileSync(htmlFile.path, 'utf-8'); // 处理HTML文件内容 // ... // 返回处理结果 res.status(200).send('OK'); }); app.listen(3000, () => console.log('Server started on port 3000')); ``` 如果HTML文本非常大,可以考虑将HTML文本分割为多个小的文本块进行上传。下面是一个示例代码: 前端代码: ```javascript const MAX_SIZE = 1024 * 1024; // 每个文本块的最大大小为1MB const submitHtml = async () => { // 获取HTML文本 const html = editorRef.value.getContent(); // 将HTML文本拆分为多个文本块 const chunks = []; let offset = 0; while (offset < html.length) { const chunk = html.slice(offset, offset + MAX_SIZE); chunks.push(chunk); offset += MAX_SIZE; } // 上传HTML文本到服务器 for (let i = 0; i < chunks.length; i++) { const formData = new FormData(); formData.append('html', chunks[i]); await axios.post('/upload', formData, { headers: { 'Content-Type': 'multipart/form-data' } }); } }; ``` 后端代码: ```javascript const express = require('express'); const app = express(); const multer = require('multer'); const path = require('path'); const fs = require('fs'); // 设置上传文件的临时目录 const upload = multer({ dest: 'uploads/' }); // 处理上传请求 app.post('/upload', upload.single('html'), (req, res) => { // 获取上传的HTML文件 const htmlFile = req.file; // 读取HTML文件内容 const htmlContent = fs.readFileSync(htmlFile.path, 'utf-8'); // 处理HTML文件内容 // ... // 返回处理结果 res.status(200).send('OK'); }); app.listen(3000, () => console.log('Server started on port 3000')); ```

相关推荐

最新推荐

recommend-type

Vue3项目打包后部署到服务器 请求不到后台接口解决方法

在本篇文章里小编给大家整理了关于Vue3项目打包后部署到服务器 请求不到后台接口解决方法,有需要的朋友们可以参考下。
recommend-type

vue-cli3项目打包后自动化部署到服务器的方法

主要介绍了vue-cli3项目打包后自动化部署到服务器的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

解决Vue axios post请求,后台获取不到数据的问题方法

今天小编就为大家分享一篇解决Vue axios post请求,后台获取不到数据的问题方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

Vue 解决通过this.$refs来获取DOM或者组件报错问题

主要介绍了Vue 解决通过this.$refs来获取DOM或者组件报错问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

vue项目部署到Apache服务器中遇到的问题解决

最近刚重构完,我们的一个项目,由原来的jsp模式改为了前后端分离,前端选型为vue,开发完成之后第一件时间就是要部署测试,服务端选的是Apache。本来以为很简单的一件事情,几经坎坷部署了两天才算能够正常访问了。...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

【实战演练】MATLAB用遗传算法改进粒子群GA-PSO算法

![MATLAB智能算法合集](https://static.fuxi.netease.com/fuxi-official/web/20221101/83f465753fd49c41536a5640367d4340.jpg) # 2.1 遗传算法的原理和实现 遗传算法(GA)是一种受生物进化过程启发的优化算法。它通过模拟自然选择和遗传机制来搜索最优解。 **2.1.1 遗传算法的编码和解码** 编码是将问题空间中的解表示为二进制字符串或其他数据结构的过程。解码是将编码的解转换为问题空间中的实际解的过程。常见的编码方法包括二进制编码、实数编码和树形编码。 **2.1.2 遗传算法的交叉和
recommend-type

openstack的20种接口有哪些

以下是OpenStack的20种API接口: 1. Identity (Keystone) API 2. Compute (Nova) API 3. Networking (Neutron) API 4. Block Storage (Cinder) API 5. Object Storage (Swift) API 6. Image (Glance) API 7. Telemetry (Ceilometer) API 8. Orchestration (Heat) API 9. Database (Trove) API 10. Bare Metal (Ironic) API 11. DNS
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。