应无所住,而生其心
排名
1
文章
860
粉丝
112
评论
163
net core webapi post传递参数
庸人 : 确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

vue, vue3 Tinymce 图片上传 。复制粘贴图片

309人阅读 2025/2/19 17:03 总访问:5182278 评论:0 收藏:0 手机
分类: 前端

上传图片,首先要启用图片插件

在plugins参数中把image加进去

在工具栏显示图片工具按钮,在toolbar参数中把image加进去

toolbar我这里是在使用的时候单独传递进去的,相当于就是在使用的时候个性化配置toolbar,在使用的时候如果不传递toolbar就是使用的默认的配置

注意不同的使用方法,可能配置plugins和toolbar的地方不一样
我这里是单独提出来写到js里边的

然后在初始化的时候赋值上去就行了:

所以这里根据不同的情况放上去即可。做完这两步配置后,就可以看到上传图片的按钮了,但是点图片按钮是没有上传选项的,只能添加图片地址。要支持上传需要对接上传图片的接口才行,简单的方式只需要配置一个上传图片的地址就行了。

简单的方式,配置上传地址

简单的方式只需要配置一个上传图片的地址就行了。

加入配置参数images_upload_url此参数用于指定一个接受上传文件的后端处理程序地址,例如:

  1. images_upload_url: '/demo/upimg.php',

如果返回的地址是相对路径,还有一个参数images_upload_base_path,可以给相对路径指定它所相对的基本路径。

  1. images_upload_base_path: '/demo',

核心示例代码:

  1. tinymce.init({
  2. selector: '#tinydemo',
  3. language:'zh_CN',
  4. plugins: 'image',
  5. toolbar: 'image',
  6. images_upload_url: '/demo/upimg.php',
  7. images_upload_base_path: '/demo',
  8. });

简单的配置一下就可以上传图片了

但是一般我们的图片上传接口不会那么简单只有一个图片信息,一般我们还会传递一些额外信息,比如存储图片的捅信息、存储文件标识等等,还会传递headers token什么的,所以一般会手动调用上传图片的接口。Tinymce 提供了images_upload_handler来手动处理图片上传。

自定义前端上传逻辑

使用 images_upload_handler 可自定义上传处理逻辑。使用该配置,则无需使用其他上传配置选项。

最新版tiny为images_upload_handler加入了第四个参数:上传进度。本例兼容旧版,未使用第四个参数。
更多配置参考:http://tinymce.ax-z.cn/configure/file-image-upload.php

使用images_upload_handler示例:

  1. import { getImgUrl } from '/@/utils/toolsFunctions'
  2. import { getToken } from '/@/utils/auth';
  3. tinymce.init({
  4. selector: '#tinydemo',
  5. plugins: 'image',
  6. toolbar: 'image',
  7. images_upload_handler: function (blobInfo, succFun, failFun) {
  8. var file = blobInfo.blob();//转化为易于理解的file对象
  9. const formData = new FormData()
  10. formData.append('file', file, 'image.png')
  11. // 其他额外参数
  12. formData.append('bucketName', 'teacher-certification')
  13. formData.append('filePath', 'teacherTraining')
  14. formData.append('fileType', '1')
  15. fetch('/oss/api/SmartFiles/UpLoadFormXXX', {
  16. method: 'POST',
  17. headers: {
  18. // 'Content-Type': 'application/json',
  19. Authorization: 'Bearer ' + getToken() // 替换为你的 token
  20. },
  21. body: formData
  22. })
  23. .then((response) => {
  24. if (response.ok) {
  25. return response.json() // 转换为JSON
  26. }
  27. throw new Error('Network response was not ok.')
  28. })
  29. .then((response) => {
  30. console.log('上传成功', response)
  31. succFun(getImgUrl(response.data.id));
  32. })
  33. .catch((error) => {
  34. console.error('上传失败', error)
  35. failFun('上传失败 ' + error);
  36. })
  37. }
  38. });

几点说明:


1:getToken是我封装获取token的,上传接口需要token进行身份验证才能调用
2:getImgUrl:我这里上传图片的接口不会直接返回图片的url,而是返回一个图片的id然后调用封装的getImgUrl方法去获取图片的地址。我这里后台封装上传图片与文件的方法是使用的oss文件存储那一套
3:我这里调用接口的方式是使用的原生的fetch方法,所以看起来麻烦一点,比如使用axios获取封装过程的axios会更加的简洁。

复制粘贴图片

让Tinymce支持直接粘贴图片上传,截图上传。非常简单,上面已经自定义了images_upload_handler方法,自定义了上传逻辑,只需要加点配置就行了。只需要配置paste和支持粘贴就行了,具体核心代码如下:

  1. tinymce.init({
  2. selector: '#tinydemo',
  3. plugins: 'paste',// 配置1
  4. toolbar: 'paste',// 配置2
  5. paste_data_images: true // 配置3, 默认是false的,记得要改为true才能粘贴
  6. })

具体配置的位置根据自己项目中的使用修改即可。


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

图片上传的安全校验

记个笔记控制层用的框架SpringMVC上传文件时,后台使用MultipartFile对象接收,前台action的enctype属性必须设置为multipart/...

百度编辑器图片上传

先在百度编辑器配置好上传图片的后台地址serverUrl:'图片上传的后台地址'varue=UE.getEditor("container&quot...

使用markdown编辑器editormd图片上传

静态资源路径问题可以参考:https://www.tnblog.net/aojiancc2/article/details/3436自定义工具栏可以参考:https://www.tn...

vue elementui,vue3 element plus 文件上传的时候设置其他参数后台.net接收传递的额外参数图片上传

比如上传文件的时候额外传递两个select选择的值 前台前面上传文件的时候要提供默认参数很简单,el-upload绑定一个data即可...

vue3 图片上传,文件上传,视频上传图片预览,视频预览

直接调用接口上传参考:https://www.tnblog.net/notebook/article/details/8495[TOC]基础的图片上传,文件上传,视频上传界...

vue3 微信小程序 uniapp图片上传,图片转base64,base64转图片

vue3 微信小程序 uniapp 图片上传uni-app中上传图片可以使用方法uni.uploadFile:uni.uploadFile官方文档:https://uniapp.d...

.net core .net6net9webapi图片上传,多图上传,按照年月来存储图片,按月存储微信小程序上传图片

[TOC]代码如下/// <summary> /// 图片上传相关服务 /// </summary> public class ImgController : FABaseAp...

Quartz.NET实例动态改变周期调度misfire、Cron

Quartz:Java编写的开源的任务调度作业框架 类似Timer之类定时执行的功能,但是更强大Quartz.NET:是把Quartz转成C# NuGet...

.NET Windows服务发布、安装、卸载、监听脚本服务调试

一、脚本 为方便不用每次都去写安装卸载的脚本1.安装脚本@echooff @echo开始安装【服务】 %SystemRoot%\Microsoft.NET\Fr...

nginx常用命令nginx启动命令nginx重启命令nginx关闭命令nginx测试配置文件是否正确nginx nginx.pid文件丢失报错

启动命令:start nginx 关闭命令:nginx -s stop nginx -s quit nginx -s stop与nginx -s quit区别 Quit is a graceful shu...

DevExpress.XtraSpreadsheet.SpreadsheetControl控件 加载excel模板

stringpath="文件路径"; DevExpress.XtraSpreadsheet.SpreadsheetControlspreadsheetControl=newDevExpress.Xtr...

上传文件到服务器及 下载到 客户端

usingSystem; usingSystem.Collections.Generic; usingSystem.Text; usingSystem.Net; usingSystem.IO; namespaceCo...

使用OutLook发送邮件

publicstaticvoidOutlook(stringSubject,stringTextBody,stringFromAdd,stringFromPass,stringTo,stringCC,List<string&...