商城网站开发方案阳江市网络问政首页

张小明 2026/1/10 7:38:23
商城网站开发方案,阳江市网络问政首页,北京做网站的价格,软件销售网站模板Word图片一键转存功能开发全记录#xff1a;从需求调研到技术落地 一、需求背景与技术选型 作为软件工程专业大二学生#xff0c;暑期独立开发Word图片一键转存系统的初衷源于两个痛点#xff1a; 学术场景中#xff0c;教师需手动提取学生提交的Word文档中…Word图片一键转存功能开发全记录从需求调研到技术落地一、需求背景与技术选型作为软件工程专业大二学生暑期独立开发Word图片一键转存系统的初衷源于两个痛点学术场景中教师需手动提取学生提交的Word文档中的实验图片进行归档企业OA系统中Word格式的报销单需分离发票图片进行财务审核技术栈选型依据组件技术选型决策依据前端框架Vue2-cli学校课程已系统学习社区生态成熟适合快速原型开发富文本编辑器wangEditor轻量级核心包仅200KB支持自定义图片上传钩子与Vue2兼容性良好后端语言PHP阿里云ECS服务器预装LAMP环境可直接部署且PHP对文件流处理效率较高数据库MySQL与PHP天然适配支持BLOB类型存储二进制图片但考虑性能最终采用文件系统存储服务器阿里云ECS学生优惠套餐1核2G 1Mbps带宽提供安全组、RDS等企业级功能二、核心功能开发历程1. Word图片提取技术调研通过分析知乎专栏《一次性提取word文件中的图片》和微信公众平台《Word图片如何批量转存?》确定两种技术路线压缩包解压法将.docx重命名为.zip解压后从word/media/目录提取图片HTML转换法使用另存为HTML功能图片会保存在生成的文件夹中技术验证在本地使用Node.js编写测试脚本constfsrequire(fs);constAdmZiprequire(adm-zip);functionextractFromZip(docxPath){constzipnewAdmZip(docxPath);constmediaEntrieszip.getEntries().filter(entryentry.entryName.startsWith(word/media/));returnmediaEntries.map(entryzip.readFile(entry));}2. 前端实现Vue2 wangEditor2.1 编辑器集成参考wangEditor官方文档和CSDN博客《wangEditor的使用》实现核心配置// editor.config.jsimport{createEditor,createToolbar}fromwangeditor/editorexportdefault{initEditor(domId){consteditorConfig{placeholder:请上传Word文档...,MENU_CONF:{uploadImage:{server:/api/upload,// 实际使用PHP接口fieldName:word_file,maxFileSize:10*1024*1024,// 10MBallowedFileTypes:[.docx],customInsert(res,editor){// 解析PHP返回的图片URL数组consturlsres.data.map(img)editor.cmd.do(insertHTML,urls.join())}}}}returncreateEditor({selector:#${domId},config:editorConfig,mode:default})}}2.2 文件处理流程用户通过工具栏上传Word文件前端使用FormData封装请求asynchandleUpload(file){constformDatanewFormData()formData.append(word_file,file)try{constresawaitaxios.post(/api/parse,formData,{headers:{Content-Type:multipart/form-data}})this.editor.cmd.do(insertHTML,res.data.map(url).join())}catch(e){this.$message.error(解析失败e.message)}}3. 后端实现PHP MySQL3.1 文件解析服务参考阿里云部署教程搭建PHP环境后编写核心处理逻辑// api/parse.phpheader(Content-Type: application/json);$uploadDir/tmp/word_uploads/;if(!file_exists($uploadDir))mkdir($uploadDir,0777,true);$fileNameuniqid()..docx;$filePath$uploadDir.$fileName;if(move_uploaded_file($_FILES[word_file][tmp_name],$filePath)){$zipnewZipArchive();if($zip-open($filePath)TRUE){$images[];for($i0;$i$zip-numFiles;$i){$entry$zip-getNameIndex($i);if(preg_match(/^word\/media\/image\d\.(jpeg|jpg|png|gif)$/i,$entry)){$imageData$zip-getFromIndex($i);$imagePath/uploads/.uniqid()...pathinfo($entry,PATHINFO_EXTENSION);file_put_contents($_SERVER[DOCUMENT_ROOT].$imagePath,$imageData);$images[]$imagePath;}}$zip-close();unlink($filePath);// 删除临时文件echojson_encode([code0,data$images]);}else{echojson_encode([code500,msg文件解压失败]);}}else{echojson_encode([code400,msg文件上传失败]);}3.2 数据库设计采用MySQL存储图片元信息实际存储路径CREATETABLEword_images(idint(11)NOTNULLAUTO_INCREMENT,original_filenamevarchar(255)NOTNULL,storage_pathvarchar(512)NOTNULL,upload_timedatetimeDEFAULTCURRENT_TIMESTAMP,doc_idvarchar(64)DEFAULTNULLCOMMENT关联文档ID,PRIMARYKEY(id),KEYidx_doc_id(doc_id))ENGINEInnoDBDEFAULTCHARSETutf8mb4;4. 阿里云部署优化安全组配置开放80/443端口限制源IP为学校教育网段OSS对象存储将图片从ECS本地存储迁移至OSS配置CDN加速性能优化启用PHP-FPM进程池配置MySQL查询缓存使用Nginx的gzip_static压缩静态资源三、技术难点突破1. 大文件处理内存溢出问题当上传超过50MB的Word文件时PHP脚本因内存不足终止解决方案修改php.ini配置memory_limit 256M upload_max_filesize 100M post_max_size 100M采用流式处理替代完全加载到内存需升级至PHP 7.4使用ZipArchive的流式接口2. 图片排序混乱问题提取的图片顺序与Word文档中的排版不一致解决方案解析Word的[Content_Types].xml获取图片索引顺序修改PHP处理逻辑// 按文件名数字排序如image1.jpg, image2.jpg...usort($images,function($a,$b){preg_match(/image(\d)/,basename($a),$matchesA);preg_match(/image(\d)/,basename($b),$matchesB);return$matchesA[1]-$matchesB[1];});四、同行交流与资源整合1. 加入专业社群QQ群223813913Word文档处理技术交流获取到docx4j的Java实现参考但因环境限制最终采用PHP方案了解到Apache POI的XWPF组件为后续Java版本开发预留接口2. 开源项目参考百度UEditor其Word图片转存插件参考荆门泽优软件文档提供前端按钮集成思路wangEditor官方示例学习到多编辑器实例管理技巧实现主从编辑器联动3. 性能测试数据在阿里云1核2G环境下测试并发数平均响应时间成功率101.2s100%503.8s92%1008.5s78%优化措施引入Redis缓存解析结果针对重复文档对大文件启用异步处理队列RabbitMQ五、项目成果与展望1. 当前成果实现Word文档中图片的无损提取支持JPEG/PNG/GIF格式前端支持拖拽上传、实时预览、批量下载后端提供RESTful API可被其他系统集成2. 后续规划功能扩展增加PDF图片提取支持结合PDF.js实现图片OCR文字识别集成百度AI接口技术升级迁移至Vue3Vite架构后端改用Go语言提升并发性能商业化探索申请软件著作权已准备材料开发企业版增加权限管理、审计日志开发感悟这个项目让我深刻体会到技术选型要平衡学习成本与生产需求文件处理类项目必须做好异常流程设计如断点续传、文件校验参与开源社区交流能获得远超预期的技术支持附项目GitHub仓库地址及在线演示链接复制插件文件安装jquerynpm install jquery导入组件importEfromwangeditorconst{$,BtnMenu,DropListMenu,PanelMenu,DropList,Panel,Tooltip}Eimport{WordPaster}from../../static/WordPaster/js/wimport{zyCapture}from../../static/zyCapture/zimport{zyOffice}from../../static/zyOffice/js/o初始化组件//zyCapture ButtonclasszyCaptureBtnextendsBtnMenu{constructor(editor){const$elemE.$(div classw-e-menu>)super($elem,editor)}clickHandler(){window.zyCapture.setEditor(this.editor).Capture();}tryChangeActive(){this.active()}}//zyOffice ButtonclassimportWordBtnextendsBtnMenu{constructor(editor){const$elemE.$(div classw-e-menu>)super($elem,editor)}clickHandler(){window.zyOffice.SetEditor(this.editor).api.openDoc();}tryChangeActive(){this.active()}}//zyOffice ButtonclassexportWordBtnextendsBtnMenu{constructor(editor){const$elemE.$(div classw-e-menu>)super($elem,editor)}clickHandler(){window.zyOffice.SetEditor(this.editor).api.exportWord();}tryChangeActive(){this.active()}}//zyOffice ButtonclassimportPdfBtnextendsBtnMenu{constructor(editor){const$elemE.$(div classw-e-menu>)super($elem,editor)}clickHandler(){window.zyOffice.SetEditor(this.editor).api.openPdf();}tryChangeActive(){this.active()}}//WordPaster ButtonclassWordPasterBtnextendsBtnMenu{constructor(editor){const$elemE.$(div classw-e-menu>)super($elem,editor)}clickHandler(){WordPaster.getInstance().SetEditor(this.editor).Paste();}tryChangeActive(){this.active()}}//wordImport ButtonclassWordImportBtnextendsBtnMenu{constructor(editor){const$elemE.$(div classw-e-menu>)super($elem,editor)}clickHandler(){WordPaster.getInstance().SetEditor(this.editor).importWord();}tryChangeActive(){this.active()}}//excelImport ButtonclassExcelImportBtnextendsBtnMenu{constructor(editor){const$elemE.$(div classw-e-menu>)super($elem,editor)}clickHandler(){WordPaster.getInstance().SetEditor(this.editor).importExcel();}tryChangeActive(){this.active()}}//ppt paster ButtonclassPPTImportBtnextendsBtnMenu{constructor(editor){const$elemE.$(div classw-e-menu>)super($elem,editor)}clickHandler(){WordPaster.getInstance().SetEditor(this.editor).importPPT();}tryChangeActive(){this.active()}}//pdf paster ButtonclassPDFImportBtnextendsBtnMenu{constructor(editor){const$elemE.$(div classw-e-menu>)super($elem,editor)}clickHandler(){WordPaster.getInstance().SetEditor(this.editor);WordPaster.getInstance().ImportPDF();}tryChangeActive(){this.active()}}//importWordToImg ButtonclassImportWordToImgBtnextendsBtnMenu{constructor(editor){const$elemE.$(div classw-e-menu>)super($elem,editor)}clickHandler(){WordPaster.getInstance().SetEditor(this.editor).importWordToImg();}tryChangeActive(){this.active()}}//network paster ButtonclassNetImportBtnextendsBtnMenu{constructor(editor){const$elemE.$(div classw-e-menu>)super($elem,editor)}clickHandler(){WordPaster.getInstance().SetEditor(this.editor);WordPaster.getInstance().UploadNetImg();}tryChangeActive(){this.active()}}exportdefault{name:HelloWorld,data(){return{msg:Welcome to Your Vue.js App}},mounted(){vareditornewE(#editor);WordPaster.getInstance({//上传接口http://www.ncmem.com/doc/view.aspx?idd88b60a2b0204af1ba62fa66288203edPostUrl:http://localhost:8891/upload.aspx,License2:,//为图片地址增加域名http://www.ncmem.com/doc/view.aspx?id704cd302ebd346b486adf39cf4553936ImageUrl:http://localhost:8891{url},//设置文件字段名称http://www.ncmem.com/doc/view.aspx?idc3ad06c2ae31454cb418ceb2b8da7c45FileFieldName:file,//提取图片地址http://www.ncmem.com/doc/view.aspx?id07e3f323d22d4571ad213441ab8530d1ImageMatch:});zyCapture.getInstance({config:{PostUrl:http://localhost:8891/upload.aspx,License2:,FileFieldName:file,Fields:{uname:test},ImageUrl:http://localhost:8891{url}}})// zyoffice// 使用前请在服务端部署zyoffice// http://www.ncmem.com/doc/view.aspx?id82170058de824b5c86e2e666e5be319czyOffice.getInstance({word:http://localhost:13710/zyoffice/word/convert,wordExport:http://localhost:13710/zyoffice/word/export,pdf:http://localhost:13710/zyoffice/pdf/upload})// 注册菜单E.registerMenu(zyCaptureBtn,zyCaptureBtn)E.registerMenu(WordPasterBtn,WordPasterBtn)E.registerMenu(ImportWordToImgBtn,ImportWordToImgBtn)E.registerMenu(NetImportBtn,NetImportBtn)E.registerMenu(WordImportBtn,WordImportBtn)E.registerMenu(ExcelImportBtn,ExcelImportBtn)E.registerMenu(PPTImportBtn,PPTImportBtn)E.registerMenu(PDFImportBtn,PDFImportBtn)E.registerMenu(importWordBtn,importWordBtn)E.registerMenu(exportWordBtn,exportWordBtn)E.registerMenu(importPdfBtn,importPdfBtn)//挂载粘贴事件editor.txt.eventHooks.pasteEvents.length0;editor.txt.eventHooks.pasteEvents.push(function(){WordPaster.getInstance().SetEditor(editor).Paste();e.preventDefault();});editor.create();varedt2newE(#editor2);//挂载粘贴事件edt2.txt.eventHooks.pasteEvents.length0;edt2.txt.eventHooks.pasteEvents.push(function(){WordPaster.getInstance().SetEditor(edt2).Paste();e.preventDefault();return;});edt2.create();}}h1,h2{font-weight:normal;}ul{list-style-type:none;padding:0;}li{display:inline-block;margin:010px;}a{color:#42b983;}测试前请配置图片上传接口并测试成功接口测试接口返回JSON格式参考为编辑器添加按钮components:{Editor,Toolbar},data(){return{editor:null,html:dd,toolbarConfig:{insertKeys:{index:0,keys:[zycapture,wordpaster,pptimport,pdfimport,netimg,importword,exportword,importpdf]}},editorConfig:{placeholder:},mode:default// or simple}},整合效果导入Word文档,支持doc,docx导入Excel文档,支持xls,xlsx粘贴Word一键粘贴Word内容自动上传Word中的图片保留文字样式。Word转图片一键导入Word文件并将Word文件转换成图片上传到服务器中。导入PDF一键导入PDF文件并将PDF转换成图片上传到服务器中。导入PPT一键导入PPT文件并将PPT转换成图片上传到服务器中。上传网络图片一键自动上传网络图片自动下载远程服务器图片自动上传远程服务器图片下载示例点击下载完整示例
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

国外网站推广宣传杭州网站公司

引言:在最近的AI Maker Summit上,滴滴团队深度分享了他们的的 Agent 产品——“小滴”,也深度介绍了对于AI在交易场景下应用价值的理解:“UI限制了需求的表达,而AI可以让个性化爆发”。 以下是结合分享内容与产品实测…

张小明 2026/1/7 2:04:17 网站建设

备案审核网站显示500网络营销推广方法的综合运用

code maximumcoconut椰子mould模具machinery机械化的elastic 有弹性的vertical垂直的accountable有责任的decisionsseasonalherds群clay土 黏土eco-cement生态水泥nuts坚果arrows箭头spears矛concentrated注意的 注意力集中的shipping运输germs细菌corn玉米insects昆虫coastlin…

张小明 2026/1/7 2:04:15 网站建设

衣服 div网站请多记几个本站域名防止失联

优化与管理FTP站点:全面指南 在搭建和管理FTP站点时,有许多实用的技巧和调整方法可以提升站点的性能、安全性和用户体验。以下将详细介绍这些操作。 1. 停止FTP站点 若你希望FTP站点仅在特定时间可用,或者要对站点进行重大更改,可以通过IIS 6管理器停止该站点。具体步骤…

张小明 2026/1/7 2:04:02 网站建设

展馆设计网站推荐做网站建设比较好的公司

医疗设备研发软件合规:协议解析引擎应对FDA 510(k)认证在当前全球医疗器械研发快速发展的背景下,FDA 510(k) 成为众多企业进入美国市场的重要门槛。对于负责医疗设备软件开发的企业协议解析引擎的设计和实现不仅关乎产品性能,更直接影响到FDA…

张小明 2026/1/6 23:31:57 网站建设

手机在线做ppt模板下载网站有哪些男女做暧暧试看网站

Wan2.2-T2V-5B如何处理多主体交互描述?‘两人握手’场景测试 在短视频和AI内容爆发的今天,你有没有想过——“输入一句话,立刻生成一段视频”这件事,真的离我们很远吗?🤔 别急着摇头。像Sora这样的大模型确…

张小明 2026/1/7 2:03:46 网站建设

如何提高网站访问速度微信小程序平台官网

军队、公安单位专用EmotiVoice加固版本 在现代军事指挥与公共安全应急响应中,语音不仅是信息传递的载体,更是态势控制、心理干预和权威传达的关键工具。传统广播系统依赖预录音频或机械式合成语音,难以适应复杂多变的实战场景——语气单一、反…

张小明 2026/1/6 18:50:14 网站建设