news 2026/4/15 20:21:52

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

作者头像

张小明

前端开发工程师

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/9 23:39:38

Hunyuan-MT-7B能否替代MyBatisPlus文档翻译?实测告诉你答案

Hunyuan-MT-7B能否替代MyBatisPlus文档翻译?实测告诉你答案 在中文开发者社区,一个老生常谈的问题始终存在:如何高效阅读和理解像 MyBatisPlus 这样的英文技术文档?尽管官方提供了详尽的 API 说明与使用示例,但对许多非…

作者头像 李华
网站建设 2026/4/13 22:13:17

告别后厨能耗黑洞!安科瑞EIoT火锅门店用电新方案

一、行业挑战:分散化运营的能源管理困境面对全国几百家/千家门店的能源改造需求,大型连锁火锅店面临三大核痛点:部署成本高:门店分散导致人工巡检、差旅及设备维护成本剧增;技术门槛高:物联网系统调试依赖专…

作者头像 李华
网站建设 2026/4/8 17:13:32

AWS EC2部署Hunyuan-MT-7B注意事项

AWS EC2部署Hunyuan-MT-7B注意事项 在企业全球化内容处理需求激增的今天,如何快速、安全地部署高质量机器翻译能力,已成为开发者和产品团队面临的核心挑战之一。传统开源模型虽然提供了参数权重,但往往要求用户自行搭建复杂的推理环境——从C…

作者头像 李华
网站建设 2026/4/15 3:19:40

从零构建MCP量子计算测试体系:4步实现高可靠验证

第一章:从零构建MCP量子计算测试体系在探索量子计算的前沿领域中,构建一个稳定、可扩展的测试体系是验证算法正确性与硬件性能的关键。MCP(Measurement-based Computing Platform)作为一种基于测量的量子计算模型,依赖…

作者头像 李华
网站建设 2026/4/14 11:13:09

贴吧灌水帖:有没有人试过用Hunyuan-MT-7B翻译古诗词?

Hunyuan-MT-7B 能不能译好古诗词?我们试了才知道 在一次偶然的深夜刷帖中,看到有人问:“有没有人拿 Hunyuan-MT-7B 翻过李白的诗?”——这问题像一颗小石子,在我脑子里荡起一圈涟漪。机器翻译早就不是新鲜事了&#xf…

作者头像 李华
网站建设 2026/4/12 3:13:45

增量学习探索:万物识别模型新增类别微调路径

增量学习探索:万物识别模型新增类别微调路径 引言:从通用识别到增量扩展的现实需求 在当前AI应用快速迭代的背景下,万物识别-中文-通用领域模型作为阿里开源的一套图像理解系统,已在多个实际场景中展现出强大的基础识别能力。该模…

作者头像 李华