深圳化妆品网站建设用wordpress制作网站模板
深圳化妆品网站建设,用wordpress制作网站模板,容易导致网站作弊的几个嫌疑,今天重大新闻头条新闻专业开发日记#xff1a;WebUploader大文件传输系统#xff08;信创兼容版#xff09;
日期#xff1a;2023年11月15日 星期三 郑州 晴
项目背景
今日接到客户紧急需求#xff1a;开发一套支持20G大文件传输的Web系统#xff0c;需兼容IE8及信创浏览器#xff08;龙芯…专业开发日记WebUploader大文件传输系统信创兼容版日期2023年11月15日 星期三 郑州 晴项目背景今日接到客户紧急需求开发一套支持20G大文件传输的Web系统需兼容IE8及信创浏览器龙芯、红莲花、奇安信支持文件夹层级结构上传/下载并满足国产化环境要求统信UOS/中标麒麟/银河麒麟达梦/人大金仓数据库。客户强调需免费开源、7×24小时支持且现有开源方案如WebUploader默认实现存在文件夹上传缺陷。技术选型与挑战前端框架JSP WebUploader基于Flash兼容IE8HTML5模式兼容现代浏览器后端JSP/ServletServlet 3.0异步上传加密传输SM4国密 AES双协议支持信创适配通过WebUploader的runtimeOrder配置优先使用flash兼容旧系统文件夹上传需递归解析文件夹结构生成JSON元数据与文件分片同步传输核心代码实现1. 前端配置JSP页面% page contentTypetext/html;charsetUTF-8 % 信创大文件传输系统 选择文件/文件夹 开始上传 var uploader WebUploader.create({ swf: /webuploader/Uploader.swf, server: /upload?actionchunk, pick: { id: #filePicker, directory: true // 启用文件夹上传 }, formData: { encryptType: SM4 // 默认使用SM4加密 }, chunked: true, chunkSize: 5 * 1024 * 1024, // 5MB分片 threads: 3, runtimeOrder: flash, // 强制Flash兼容IE8 compress: false }); // 文件夹结构处理 uploader.on(filesQueued, function(files) { files.forEach(file { if (file.isDir) { // 递归读取文件夹需配合Flash文件系统API console.log(检测到文件夹:, file.name); } }); }); // 上传前加密示例SM4 ECB模式 uploader.on(uploadBeforeSend, function(block, data) { var key 1234567890abcdef; // 实际应从服务端获取 var ciphertext SM4.encrypt(block.chunk, key); data.ciphertext ciphertext; });2. 后端处理JSP/Servlet// UploadServlet.java (Servlet 3.0)WebServlet(/upload)MultipartConfigpublicclassUploadServletextendsHttpServlet{protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{Stringactionrequest.getParameter(action);StringencryptTyperequest.getParameter(encryptType);if(chunk.equals(action)){// 处理分片上传PartfilePartrequest.getPart(file);StringchunkIndexrequest.getParameter(chunk);StringfileNamerequest.getParameter(name);// 解密逻辑示例AESif(AES.equals(encryptType)){Stringciphertextrequest.getParameter(ciphertext);// byte[] decrypted AESUtil.decrypt(ciphertext, KEY);// 实际需将解密数据写入临时文件}// 保存分片到临时目录StringtempPath/tmp/uploads/fileName_chunkIndex;try(InputStreaminfilePart.getInputStream();FileOutputStreamoutnewFileOutputStream(tempPath)){byte[]buffernewbyte[1024];intbytesRead;while((bytesReadin.read(buffer))!-1){out.write(buffer,0,bytesRead);}}response.getWriter().write({\status\:1});}}}3. 文件夹元数据处理// 前端生成文件夹结构JSONfunctiongenerateFolderMeta(fileEntry){varmeta{name:fileEntry.name,isDir:fileEntry.isDir,children:[]};if(meta.isDir){// 递归读取子文件需Flash支持// var reader fileEntry.createReader();// reader.readEntries(function(entries) {// entries.forEach(entry {// meta.children.push(generateFolderMeta(entry));// });// });}returnmeta;}// 后端合并分片时重建目录结构// 需在所有分片上传完成后调用合并接口信创环境适配方案浏览器兼容通过webuploader.flashonly.js强制使用Flash运行时测试验证龙芯浏览器MIPS架构需Flash插件支持操作系统适配统信UOS使用Debian包管理安装Java 8 Tomcat 8中标麒麟提供RPM安装包及依赖解决脚本数据库适配// 达梦数据库连接示例publicclassDMDataSource{publicstaticConnectiongetConnection()throwsSQLException{DriverManager.registerDriver(newdm.jdbc.driver.DmDriver());returnDriverManager.getConnection(jdbc:dm://localhost:5236/DAMENG,SYSDBA,SYSDBA);}}当前问题与求助文件夹上传缺陷WebUploader默认Flash实现无法递归读取子文件夹需自定义扩展信创浏览器对Flash的支持存在差异红莲花浏览器需额外配置加密性能优化20G文件加密传输导致内存溢出需实现流式加密断点续传实现需设计分片校验机制MD5校验和寻求帮助诚邀熟悉WebUploader源码、信创环境开发的大神加入QQ群374992201提供以下支持完善文件夹递归上传逻辑协助优化SM4加密性能测试跨浏览器兼容性明日计划完成分片合并接口开发搭建统信UOS测试环境编写国产化数据库适配层签名郑州某高校大三学生 张工导入项目导入到Eclipse点击查看教程导入到IDEA点击查看教程springboot统一配置点击查看教程工程NOSQLNOSQL示例不需要任何配置可以直接访问测试创建数据表选择对应的数据表脚本这里以SQL为例修改数据库连接信息访问页面进行测试文件存储路径up6/upload/年/月/日/guid/filename效果预览文件上传文件刷新续传支持离线保存文件进度在关闭浏览器刷新浏览器后进行不丢失仍然能够继续上传文件夹上传支持上传文件夹并保留层级结构同样支持进度信息离线保存刷新页面关闭页面重启系统不丢失上传进度。下载示例点击下载完整示例