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

TinyMCE上传图片后端处理写法

时间:2024-04-03 18:24:11浏览次数:23  
标签:function const 上传 base64 TinyMCE upload 写法 图片

TinyMCE上传图片后端处理写法

 

写法有两种,一种是先把图片转换成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,上传,base64,TinyMCE,upload,写法,图片
From: https://www.cnblogs.com/sexintercourse/p/18113304

相关文章

  • 如何将之前编辑的文章HTML源代码导入到TinyMCE编辑器中
    如何将之前编辑的文章HTML源代码导入到TinyMCE编辑器中 如果你想用TinyMCE来修改你之前写的文章那么你需要将源代码放到TinyMCE中,如果服务器把HTML源码发给我们可是我们应该怎样调用?方法为使用 tinymce.activeEditor.setContent()这个函数具体用法为:tinymce.activeEdito......
  • 前端如何上传文件给服务器
    前端如何上传文件给服务器 上传文件到服务器常用的方法有两种第一种:将文件转换成base64编码后使用POST上传给服务器实现方法URL.createObjectURL(BlobFile)//或者由canvas生成canvas.toDataURL('image/jpeg',0.8)优点:可以将二进制文件转换为文本数据进行传输,避免了......
  • cloudflare认识3(Typora结合picgo直接上传图片到CF)
    参考:https://juejin.cn/post/7259668331711152183在上一篇cloudflare认识2(picgo结合使用)  把picgo成功结合CF实现了图床功能后,为了后期用Typora写md方便,这回直接在Typora里面配置了picgo用来直接上传到CF上,具体操作如下按键组合ctrl+,进入设置选择“图像”,配置picgo路径最......
  • cloudflare认识1(上传文件到桶)
    参考:https://fecify.com/doc/cn-1.0/fecify-shop-helper-cloudflare-r2.html#%E4%BA%91%E5%AD%98%E5%82%A8-%E4%BD%BF%E7%94%A8cloudflare-r2https://zhuanlan.zhihu.com/p/658058503下面记录下我认识CF的R2是个啥,首先CF意思是cloudflare是个平台,R2是他的一款产品有点类似于阿里......
  • 电信aep—Ctwing平台使用笔记——mqttfx接入电信aep实现数据上传、命令下发。
    最近搞了电信平台,记录一下目录1.创建产品2.添加设备3.记录以下信息4.打开mqttfx​编辑5.试试​编辑6.建立属性7.建立服务8.打开mqttfx,输入主题与报文9.上传10指令下发1.创建产品2.添加设备3.记录以下信息4.打开mqttfx参数填写规则:1.BrokerAddress:从设......
  • 上传苹果IPA安装包的最佳实践:确保成功通过App Store审核
    目录引言摘要第二步:打开appuploader工具第二步:打开appuploader工具,第二步:打开appuploader工具第五步:交付应用程序,在iTunesConnect中查看应用程序总结引言在将应用程序上架到苹果应用商店之前,开发者需要学习如何上传ipa安装包。本文将介绍使用appuploader工具将ipa......
  • 逐步指南:如何正确上传苹果IPA安装包至App Store
    目录引言摘要第二步:打开appuploader工具第二步:打开appuploader工具,第二步:打开appuploader工具第五步:交付应用程序,在iTunesConnect中查看应用程序总结引言在将应用程序上架到苹果应用商店之前,开发者需要学习如何上传ipa安装包。本文将介绍使用appuploader工具将ipa......
  • vue2 +element-ui图片上传示例
    这里使用了一个没有用的裁剪插件,需要先下载它npmivue-cropper@0.6.4--save然后在main.js引入:importVueCropperfrom'vue-cropper'Vue.use(VueCropper)1、html部分:<template><el-formref="form":model="form"label-width="1.2rem&qu......
  • IOS开发使用Xcode上传构建版本报错 Distribution failed with errors:Asset validatio
    报错信息:SDKversionissue.ThisappwasbuiltwiththeiOS16.0SDK.AlliOSandiPadOSappsmustbebuiltwiththeiOS16.1SDKorlater,includedinXcode14.1orlater,inordertobeuploadedtoAppStoreConnectorsubmittedfordistribution.Startin......
  • 【javaWeb & 功能介绍第一篇】阿里云OSS文件上传
    文件上传文件上传存储文件本地存储云服务阿里云文件上传文件上传是将本地的图片,视频,音频等文件上传到服务器,供其他用户浏览或下载的过程文件上传在项目中应用十分广泛,我们经常发微博,发微信都用到了文件上传的功能在前端的开发之中,如果需要文件上传功能,则必须在......