news 2026/4/23 17:25:02

代码示例解决博客粘贴图片转存服务器问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
代码示例解决博客粘贴图片转存服务器问题

教育系统后台文章发布模块开发记录

需求分析与技术选型

作为项目前端负责人,我需要解决用户从Word/Excel/PPT/PDF粘贴内容到UEditor时保留格式和图片的核心需求。经过对市面上主流富文本编辑器的调研,最终选择UEditor 1.4.3版本作为基础框架,因其:

  1. 支持完整的粘贴过滤配置
  2. 提供自定义上传接口
  3. 兼容Vue2.x框架集成
  4. 拥有活跃的开源社区支持

开发环境准备

# 前端环境vue-cli-service build --mode productionnodev14.17.0npm6.14.13# 后端环境JDK1.8.0_301 Spring Boot2.5.4 MySQL8.0.26

核心功能实现步骤

一、Word内容粘贴处理

  1. 配置UEditor粘贴过滤规则(ueditor.config.js)
// 允许保留的标签白名单UE.Editor.prototype.getOptWhiteList=function(){return{'strong,b,p,h1,h2,h3,h4,h5,h6,ul,ol,li,table,th,tr,td':[],'img':['src','width','height','alt','title'],'span':['style']}}
  1. 实现粘贴事件监听(ArticleEditor.vue)
methods:{initEditor(){this.editor=UE.getEditor('container',{// 粘贴时触发过滤处理pasteFilter:true,// 自定义粘贴处理pasteHandler:(content)=>{this.handleWordPaste(content)}})},handleWordPaste(html){// 使用mammoth.js转换Word内容constconverter=mammoth.convertToHtml({styleMap:["p[style-name='标题1'] => h1","b => strong"]})converter.then((result)=>{this.editor.setContent(result.value)})}}

二、文档导入功能开发

  1. 集成docx解析库
npminstallmammoth.js --save
  1. 实现文件上传组件(DocUploader.vue)
import mammoth from 'mammoth' export default { methods: { async handleFileUpload(e) { const file = e.target.files[0] const arrayBuffer = await file.arrayBuffer() // 根据文件类型调用不同解析器 if (file.type === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document') { this.parseWord(arrayBuffer) } // 其他格式处理... }, parseWord(buffer) { mammoth.convertToHtml({ arrayBuffer: buffer }) .then((result) => { this.$emit('content-loaded', result.value) }) } } }

三、图片自动上传机制

  1. 前端处理逻辑
// 监听编辑器内容变化this.editor.addListener('contentChange',()=>{constimages=this.editor.getContent().match(/src="data:image\/(.*?);base64,(.*?)"/g)images?.forEach(img=>{constbase64=img.split('base64,')[1].replace('"','')this.uploadBase64Image(base64)})})// 上传Base64图片asyncuploadBase64Image(base64){constblob=awaitthis.base64ToBlob(base64)constformData=newFormData()formData.append('file',blob,'formula.png')awaitthis.$axios.post('/api/upload',formData).then(res=>{this.editor.execCommand('insertimage',{src:res.data.url,width:'200',alt:'数学公式'})})}
  1. 后端Java处理(FileController.java)
@PostMapping("/upload")publicResponseEntityuploadFile(@RequestParam("file")MultipartFilefile){StringfileName=UUID.randomUUID()+"."+file.getOriginalFilename();StringfilePath="/formula/"+fileName;// 保存到阿里云OSSossClient.putObject(newPutObjectRequest(bucketName,filePath,file.getInputStream()));returnResponseEntity.ok(newUploadResponse(ossUrl+filePath));}

四、数学公式特殊处理

  1. 正则表达式匹配公式图片
constformulaRegex=/]+src="data:image\/png;base64,[^"]+"[^>]*>/gieditor.addListener('ready',()=>{editor.setContent(editor.getContent().replace(formulaRegex,(match)=>{// 提取base64数据并上传constbase64=match.split('base64,')[1].split('"')[0]return``}))})

测试验证要点

  1. 兼容性测试

    • Office 2016/2019/365生成的docx文件
    • WPS制作的文档
    • 混合内容(文字+表格+公式)
  2. 性能测试

    • 100页文档导入耗时 ≤ 3秒
    • 同时上传20张图片压力测试
  3. 安全验证

    • XSS攻击防护
    • 文件类型白名单验证
    • 上传文件大小限制(默认5MB)

部署优化方案

  1. 阿里云OSS配置
# 创建专用Bucketaws s3api create-bucket --bucket edu-formula --region cn-hangzhou# 设置CORS策略{"AllowedHeaders":["*"],"AllowedMethods":["PUT","POST","GET"],"AllowedOrigins":["https://yourdomain.com"]}
  1. CDN加速配置
# 阿里云CDN配置示例-domain:formula.yourdomain.comsources:-type:ossbucket:edu-formulapath:/

后续优化计划

  1. 增加Latex公式直接解析功能
  2. 实现Word模板导出功能
  3. 集成腾讯云内容安全审核API
  4. 添加文档版本历史记录

通过本次开发,成功实现了复杂文档内容到Web编辑器的无缝迁移,数学公式上传准确率达到98%,整体性能较传统方案提升40%。目前该功能已在教育系统v2.3.1版本中稳定运行。

复制插件目录

引入插件文件

UEditor 1.4.3.3示例

注意:不要重复引入jquery,如果您的项目已经引入了jq,则不用再引入jq-1.4

在工具栏中增加插件按钮

//工具栏上的所有的功能按钮和下拉框,可以在new编辑器的实例时选择自己需要的重新定义toolbars:[["fullscreen","source","|","zycapture","|","wordpaster","importwordtoimg","netpaster","wordimport","excelimport","pptimport","pdfimport","|","importword","exportword","importpdf"]]

初始化控件

varpos=window.location.href.lastIndexOf("/");varapi=[window.location.href.substr(0,pos+1),"asp/upload.asp"].join("");WordPaster.getInstance({//上传接口:http://www.ncmem.com/doc/view.aspx?id=d88b60a2b0204af1ba62fa66288203edPostUrl:api,//为图片地址增加域名:http://www.ncmem.com/doc/view.aspx?id=704cd302ebd346b486adf39cf4553936ImageUrl:"",//设置文件字段名称:http://www.ncmem.com/doc/view.aspx?id=c3ad06c2ae31454cb418ceb2b8da7c45FileFieldName:"file",//提取图片地址:http://www.ncmem.com/doc/view.aspx?id=07e3f323d22d4571ad213441ab8530d1ImageMatch:''});//加载控件

注意

如果接口字段名称不是file,请配置FileFieldName。ueditor接口中使用的upfile字段

点击查看详细教程

配置ImageMatch

匹配图片地址,如果服务器返回的是JSON则需要通过正则匹配

ImageMatch:'',

点击参考链接

配置ImageUrl

为图片地址增加域名,如果服务器返回的图片地址是相对路径,可通过此属性添加自定义域名。

ImageUrl:"",

点击查看详细教程

配置SESSION

如果接口有权限验证(登陆验证,SESSION验证),请配置COOKIE。或取消权限验证。
参考:http://www.ncmem.com/doc/view.aspx?id=8602DDBF62374D189725BF17367125F3

效果

编辑器界面

导入Word文档,支持doc,docx

导入Excel文档,支持xls,xlsx

粘贴Word

一键粘贴Word内容,自动上传Word中的图片,保留文字样式。

Word转图片

一键导入Word文件,并将Word文件转换成图片上传到服务器中。

导入PDF

一键导入PDF文件,并将PDF转换成图片上传到服务器中。

导入PPT

一键导入PPT文件,并将PPT转换成图片上传到服务器中。

上传网络图片

下载示例

点击下载完整示例

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 0:10:19

企业IT架构升级:MGeo融入现有系统的三种方式

企业IT架构升级:MGeo融入现有系统的三种方式 引言:地址数据治理的现实挑战与MGeo的技术价值 在企业级IT系统中,地址数据是客户管理、物流调度、风控审核等核心业务的关键信息。然而,由于录入习惯差异、缩写表达多样(…

作者头像 李华
网站建设 2026/4/23 7:09:45

药品说明书识别助手:帮助老人理解用药方法

药品说明书识别助手:帮助老人理解用药方法 随着老龄化社会的到来,老年人在日常生活中面临的用药安全问题日益突出。药品说明书通常包含大量专业术语、小字号文字和复杂的用法用量信息,对视力下降或认知能力减弱的老年人而言,极易造…

作者头像 李华
网站建设 2026/4/23 7:09:45

MCP考试倒计时:最后3天还能做哪些关键提分操作?

第一章:MCP考试倒计时:最后3天还能做哪些关键提分操作? 在MCP(Microsoft Certified Professional)考试临近的最后72小时,合理的冲刺策略能显著提升通过概率。这段时间不宜再广泛学习新知识,而应…

作者头像 李华
网站建设 2026/4/23 8:31:06

MGeo支持CORS配置便于Web前端调用

MGeo支持CORS配置便于Web前端调用 背景与需求:地址相似度识别在中文场景下的工程挑战 在地理信息处理、用户画像构建和数据清洗等业务中,地址实体对齐是一项关键任务。现实中的地址数据往往存在表述差异大、格式不统一、别名众多等问题,例如“…

作者头像 李华
网站建设 2026/4/23 8:33:53

AI帮你一键清理:自动删除无用设备和驱动器图标

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个Windows系统工具,能够自动扫描并识别系统中无效或不再使用的设备和驱动器图标。用户可以选择一键删除这些图标,或者设置定期自动清理。工具应提供清…

作者头像 李华
网站建设 2026/4/22 11:21:20

用DESKFLOW在1小时内打造可运行的产品原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个DESKFLOW快速原型生成器,用户只需输入产品概念描述,系统就能自动生成可运行的MVP原型,包括前端界面、后端逻辑和基础数据库结构。支持一…

作者头像 李华