首页 > 其他分享 >TinyMCE上传图片后端处理写法

TinyMCE上传图片后端处理写法

时间:2023-04-17 21:35:31浏览次数:31  
标签:function const 上传 image base64 TinyMCE upload 写法 图片

写法有两种,一种是先把图片转换成base64后再本地解析显示,这样可以直接将图片储存在HTML文件中,如果图片过多可能会让HTML文件过大,或者你可以将已经转码成base64的图片上传到服务器后服务器再转码成原jpg或png格式。

另一种是方法是通过POST把图片传输给服务器后,服务器再返回图片地址我们再调用

第一种写法具体如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>TinyMCE图片上传测试</title>
    <script src="tinymce.min.js"></script>
    <script type="text/javascript">
        tinymce.init({
            selector: '#mytextarea',
            language: 'zh_CN',
            plugins: "image",
            toolbar: "image",
            images_dataimg_filter: function (img) {
                //添加图片渲染到编辑器中
                return img.hasAttribute('internal-blob');
            },
            paste_data_images: true,
            images_upload_handler: function (blobInfo, success, failure) {
                //将图片转码为base64格式
                success("data:" + blobInfo.blob().type + ";base64," + blobInfo.base64());
            }
        });
    </script>
</head>
<body>
    <textarea id="mytextarea"></textarea>
</body>
</html>

这样所有的图片都会以base64的方式存储在HTML文件中,如果需要上传到服务器中则可以在服务端这样写:

//NodeJS服务端:
app.post('/upload', function (req, res) {
    //接收前台POST过来的base64
    let imgData = req.body.imgData;
    let base64Data = imgData.replace(/^data:image\/\w+;base64,/, "");     //过滤data:URL
    let dataBuffer = new Buffer(base64Data, 'base64');       
    fs.writeFile("image.png", dataBuffer, function (err) {
        if (err) {
            res.send(err);
        } else {
            res.send("保存成功!");
        }
    });
});

第二种方法,先上传再调用

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>TinyMCE图片上传测试</title>
    <script src="tinymce.min.js"></script>
    <script type="text/javascript">
        tinymce.init({
            selector: '#mytextarea',
            language: 'zh_CN',
            plugins: "image",
            toolbar: "image",
            images_upload_base_path: 'dir', //图片存放目录
            images_upload_url: '/upload',   //上传地址
        });
    </script>
</head>
<body>
    <textarea id="mytextarea"></textarea>
</body>
</html>

后端图片处理:

const express = require("express");
const app = express();
const server = require("http").createServer(app);
const fs = require('fs');
const path = require('path');
const formidable = require('formidable');
 
app.use(express.static("public"));
const port = process.env.PORT || 3000;
server.listen(port, function () { console.log(`listening on *:${port}`) });
 
app.post('/upload', function (req, res, next) {
    let form = new formidable.IncomingForm();
    form.uploadDir = "./public/dir";
    form.maxFieldsSize = 4 * 1024 * 1024;  //用户头像大小限制为最大4M    
    form.keepExtensions = true;        //使用文件的原扩展名  
    form.parse(req, function (err, fields, file) {
        res.send({
            location: path.basename(file.file.path) //返回图片地址
        });
    });
});

这样每次上传新图片的时候服务器的dir文件夹就会收到一张新的图片

标签:function,const,上传,image,base64,TinyMCE,upload,写法,图片
From: https://www.cnblogs.com/mydyxy/p/17327579.html

相关文章

  • 论文caption写法讨论
    本文来自一篇英文博客。总结了该博客提出的关于caption写法。博客链接在末尾给出。caption的组成部分一个caption通常由一下几个部分组成。declarativetitle:总结在figure中展示的数据的主要发现。通常的caption中不会明确表示数据的主要发现而是仅说明被讨论的变量。由读......
  • 停用flash的rtmfp 【禁止flash的udp上传】
    以XP为例,找到C:\WINDOWS\system32\Macromed\Flash\mms.cfg。当然你也可以直接搜索mms.cfg 在里面添加这段红色字体。  RTMFPP2PDisable=1  意味关闭flash的rtmfp。如果没有,可以手动添加。也可以新建bat文件,复制以下代码。1.echoon2.pause3.echoRTMFPP2PDisable=......
  • 阿里云部署mysql(本地上传)
    1.阿里云试用一个月活动2.选择机器配置为:2核4G内存3M带宽40G云盘centOS7.964位(这个配置刚好吃满优惠)3.将要安装的版本是MySQL8.0.314.到MySQL官网下载,版本为Community版本,对应操作系统是RedHat,操作系统版本是Linux7X865.MySQL8.0.31下载链接6.下载完成后,解压,并使用xsh......
  • mysql优化思路(本地上传)
    MySQL优化从四个方面入手硬件和操作系统层面的优化架构设计层面的优化MySQL程序配置的优化SQL执行的优化1.硬件和操作系统层面的优化硬件层面主要是cpu,内存,网络带宽,磁盘读写操作系统主要是网络配置,应用文件句柄数(这部分优化由DBA或运维完成,加硬件投入解决100%问题,所以要......
  • IDEA(本地上传)
    IDEA常用快捷键Ctrl+Alt+V根据后半部分自动生成前半部分Alt+Insert自动生成get/set/tostringCtrl+Alt+L自动格式化Ctrl+/行注释Ctrl+Shift+/块注释/**++Enter方法说明注......
  • 文本编辑器 实现ctrl+v粘贴图片并上传、word粘贴带图片
    ​ 当前功能基于PHP,其它语言流程大抵相同。大概流程:1.将docx文件上传到服务器中2.使用PHPoffice/PHPword实现将word转换为HTML3.将HTML代码返回并赋值到编辑器中 1编辑器配置修改1.1新增上传wordjson配置在ueditor\php\config.json中新增如下配置:     /*......
  • 将本地MarkDown文件直接上传到博客园网站
    本地MarkDown直接上传到博客园网站1.采用dotnet-sdk方式:1.需要好用的MarkDown笔记软件:(Typora)https://www.typora.io/2.从Typora到博客园的装欢需要以下步骤:(1)下载dotnet-sdk并安装:.NET教程|HelloWorld5分钟(microsoft.com)(2)通过dotnet--info确认对应的版本:dotnet......
  • koa上传下载文件
    1、koa上传文件前端:input标签的files中获取file类型(比如饿了么的raw),file类型是一种特殊的blob类型,通过加入FormData类型中,通过FormData传给后端letblob=file类型(从type为file的input的value中的files数组中获取)letformdata=newFormData()formdata.append('file',b......
  • vue3使用tinymce
    第一种方法:通过使用key云端调用安装@tinymce/tinymce-vuenpmi@tinymce/tinymce-vue去官网注册一个账号获取key,然后去https://www.tiny.cloud/get-tiny/language-packages/下载语言包,放在目录下的public里在组件中使用,工具栏可以是字符串或者数组,一行字符串可以看做......
  • tinymce封装成vue3组件
    封装成组件<scriptsetup>importEditorfrom'@tinymce/tinymce-vue'//引入tinymce开启本地模式import'tinymce/tinymce'//引入图标和主题等import'tinymce/themes/silver/theme'import'tinymce/icons/default/icons'import'tin......