湖南省建设资源人才网站上海网站建设导航

张小明 2026/1/19 17:31:54
湖南省建设资源人才网站,上海网站建设导航,建立一个网站平台需要多少钱,wordpress 域名插件大文件上传系统开发全攻略#xff08;兼容IE8的Vue3WebForm实现#xff09; 项目背景 兄弟们#xff0c;这次接了个硬骨头活儿#xff01;客户要我们实现一个支持20G文件上传的系统#xff0c;还要兼容IE8这种古董浏览器#xff0c;预算只有100块#xff01;不过别慌兼容IE8的Vue3WebForm实现项目背景兄弟们这次接了个硬骨头活儿客户要我们实现一个支持20G文件上传的系统还要兼容IE8这种古董浏览器预算只有100块不过别慌咱们程序员不就是喜欢挑战不可能吗今天就带大家一步步搞定这个项目。技术选型分析首先梳理下需求前端Vue3 CLI 原生JS因为要兼容IE8后端ASP.NET WebFormSQL Server功能大文件/文件夹上传下载、加密传输、断点续传特殊要求兼容IE8、保留文件夹结构、非打包下载为什么不用WebUploader虽然它是个好库但IE8兼容性成问题而且我们要完全控制代码所以决定原生JS实现。前端实现兼容IE8版1. 文件选择组件兼容IE8export default { data() { return { fileList: [], chunkSize: 5 * 1024 * 1024, // 5MB分片 isIE8: false } }, mounted() { // 检测IE8 this.isIE8 this.detectIE8(); // 恢复上传进度 this.restoreUploadProgress(); }, methods: { detectIE8() { const ua window.navigator.userAgent; return ua.indexOf(MSIE 8.0) 0 || ua.indexOf(MSIE 7.0) 0; }, triggerFileInput() { document.getElementById(fileInput).click(); }, triggerFolderInput() { if (this.isIE8) { alert(IE8不支持文件夹上传请使用现代浏览器或单独上传文件); return; } document.getElementById(folderInput).click(); }, } }2. IE8兼容性处理由于IE8不支持FormData、Blob等现代API我们需要做兼容处理// 在main.js或单独的文件中添加IE8兼容代码if(detectIE8()){// 加载必要的polyfillloadScript(https://cdn.jsdelivr.net/npm/ie8-polyfill1.0.0/dist/ie8-polyfill.min.js);// 重写XMLHttpRequest以支持大文件上传constoriginalXHRwindow.XMLHttpRequest;window.XMLHttpRequestfunction(){constxhrneworiginalXHR();constoriginalSendxhr.send;xhr.sendfunction(data){if(datainstanceofFormData){// IE8 FormData处理constformdocument.createElement(form);form.style.displaynone;document.body.appendChild(form);// 正常发送originalSend.call(xhr,data);};returnxhr;};}后端实现ASP.NET WebForm1. 文件上传处理C#// FileHandler.ashx.cspublicclassFileHandler:IHttpHandler{privatereadonlystringstoragePathE:\UploadedFiles;privatereadonlystringconnectionStringYour_SQL_Server_Connection_String;publicvoidProcessRequest(HttpContextcontext){context.Response.ContentTypeapplication/json;try{stringactioncontext.Request[action]??context.Request.PathInfo.Trim(/);switch(action.ToLower()){casegetsign:HandleGetSign(context);break;caseuploadchunk:HandleUploadChunk(context);break;casemerge:HandleMerge(context);break;casedownload:HandleDownload(context);break;default:context.Response.Write({\success\:false,\message\:\Invalid action\});break;}}catch(Exceptionex){}}}2. 数据库表设计SQL Server-- 上传主表CREATETABLEUploads(IdINTIDENTITY(1,1)PRIMARYKEY,UploadId NVARCHAR(50)NOTNULLUNIQUE,FileName NVARCHAR(255)NOTNULL,FullPath NVARCHAR(1000)NOTNULL,FileSizeBIGINTNOTNULL,ChunksINTNOTNULL,StatusNVARCHAR(20)NOTNULLDEFAULTuploading,CreatedDateDATETIMENOTNULL,CompletedDateDATETIMENULL,UserId NVARCHAR(50)NULL-- 如果有用户系统);-- 上传分片表CREATETABLEUploadChunks(IdINTIDENTITY(1,1)PRIMARYKEY,UploadId NVARCHAR(50)NOTNULL,ChunkIndexINTNOTNULL,StatusNVARCHAR(20)NOTNULLDEFAULTpending,CreatedDateDATETIMENOTNULL,UpdateDateDATETIMENOTNULL,FOREIGNKEY(UploadId)REFERENCESUploads(UploadId));-- 文件元数据表CREATETABLEFiles(IdINTIDENTITY(1,1)PRIMARYKEY,FilePath NVARCHAR(1000)NOTNULLUNIQUE,FileName NVARCHAR(255)NOTNULL,FileSizeBIGINTNOTNULL,UploadDateDATETIMENOTNULLDEFAULTGETDATE(),LastModifiedDATETIMENOTNULLDEFAULTGETDATE(),IsDirectoryBITNOTNULLDEFAULT0,ParentPath NVARCHAR(1000)NULL,UserId NVARCHAR(50)NULL);加密传输和存储实现1. 前端加密使用AES简化版// crypto.js - 简化版AES加密实际项目应该使用更完整的库functionencryptData(data,password){// 实际项目中应该使用Web Crypto API或引入crypto-js等库// 这里只是示例实际IE8兼容的加密需要更复杂的实现// 简单示例使用XOR加密实际项目中不要这样用if(typeofdatastring){letresult;for(leti0;idata.length;i){resultString.fromCharCode(data.charCodeAt(i)^password.charCodeAt(i%password.length));}returnresult;}returndata;}2. 后端解密和存储加密// 在FileHandler.ashx.cs中添加privatebyte[]DecryptData(byte[]data,stringpassword){// 实际项目应该使用AES等强加密算法// 这里只是示例与前端的XOR加密对应byte[]resultnewbyte[data.Length];for(inti0;idata.Length;i){result[i](byte)(data[i]^password[i%password.Length]);}returnresult;}部署和配置1. IIS配置要点上传大小限制在web.config中添加超时设置在IIS管理器中应用程序池 - 高级设置 - 闲置超时(分钟) 设为 0不超时连接超时设为较大值2. 前端构建配置在vue.config.js中module.exports{publicPath:./,// 相对路径outputDir:dist,assetsDir:static,configureWebpack:{target:[web,es5],// 兼容IE8module:{rules:[{test:/\.js$/,exclude:/node_modules\/(?!(dom7|ssr-window|swiper)\/).*/,use:{loader:babel-loader,options:{presets:[[babel/preset-env,{useBuiltIns:usage,corejs:3,targets:{ie:8}}]]}}}]}},chainWebpack:config{// 兼容IE8的polyfillconfig.entry(main).add(babel-polyfill)}}完整系统架构图客户端 (IE8/现代浏览器) ├─ Vue3前端 (兼容IE8) │ ├─ 文件选择组件 │ ├─ 分片上传逻辑 │ ├─ 进度保存与恢复 │ └─ 加密处理 │ └─ 原生JS后备方案 ├─ IE8兼容的表单提交 ├─ iframe上传处理 └─ 进度轮询机制 服务器 (IIS) ├─ ASP.NET WebForm后端 │ ├─ 文件分片接收 │ ├─ 数据库记录 │ └─ 合并处理 │ └─ 文件存储系统 ├─ 临时分片存储 (E:\temp) └─ 正式文件存储 (E:\UploadedFiles) 数据库 (SQL Server) ├─ Uploads表 (上传记录) ├─ UploadChunks表 (分片记录) └─ Files表 (文件元数据)开发文档要点系统功能大文件分片上传5MB/片文件夹结构保留断点续传加密传输和存储多浏览器兼容API接口/api/file/getSign- 获取上传签名/api/file/uploadChunk- 上传分片/api/file/merge- 合并文件/api/file/download- 下载文件部署说明IIS配置要求数据库初始化脚本存储路径权限设置兼容性说明IE8特殊处理现代浏览器优化降级方案实际项目建议兄弟们虽然我们接了这个活但说实话100块预算真的不够看。这里有几个建议分阶段交付先实现基本文件上传功能再逐步添加高级功能简化加密初期可以用ZIP压缩代替加密降低开发难度性能优化20GB文件上传需要服务器有足够资源建议客户升级硬件额外收费把兼容IE8作为额外服务收费不然真要亏本完整代码获取由于篇幅限制完整代码包括前端构建、后端实现、数据库脚本等已经放在GitHub上了https://github.com/your-repo/large-file-uploader加入我们的接单群最后打个广告欢迎加入我们的接单群374992201免费获取完整项目代码7*24小时技术支持接单合作机会红包活动进行中高额提成计划推荐就有20%起群里大佬云集无论是找工作、接私单还是技术交流都是不二之选特别是最近有红包活动加群就送1-99元快来抢啊总结这次的项目虽然挑战很大但通过合理的分片上传、状态保存和兼容性处理我们完全可以在预算内完成。关键是要前端做好分片和进度保存后端稳定接收分片并记录状态特别注意IE8的兼容性问题加密部分可以简化或作为增值服务希望这个方案对大家有所帮助也欢迎在群里一起讨论更优的解决方案设置框架安装.NET Framework 4.7.2https://dotnet.microsoft.com/en-us/download/dotnet-framework/net472框架选择4.7.2添加3rd引用编译项目NOSQLNOSQL无需任何配置可直接访问页面进行测试SQL使用IIS大文件上传测试推荐使用IIS以获取更高性能。使用IIS Express小文件上传测试可以使用IIS Express创建数据库配置数据库连接信息检查数据库配置访问页面进行测试相关参考文件保存位置效果预览文件上传文件刷新续传支持离线保存文件进度在关闭浏览器刷新浏览器后进行不丢失仍然能够继续上传文件夹上传支持上传文件夹并保留层级结构同样支持进度信息离线保存刷新页面关闭页面重启系统不丢失上传进度。下载完整示例下载完整示例
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

试看30秒做受小视频网站淄博阿雷网站建设公司

1.研究意义以及研究现状 1.1研究背景 随着移动互联网的发展,越来越多的应用都能在移动设备上完成。人们使用移动设备可完成购物,外卖点单,以及通过在线支付软件完成订单。随着信息技术的快速发展,移动互联网服务已经逐渐成为主流…

张小明 2026/1/17 16:43:32 网站建设

陕西建站图片免费转链接

米家设备在Home Assistant中频繁掉线?设备状态无法同步更新?作为智能家居用户,你可能正面临这些令人头疼的连接问题。本文基于ha_xiaomi_home集成项目,采用"问题诊断→解决方案→预防措施"的三步法,帮你彻底…

张小明 2026/1/17 16:43:33 网站建设

网站设计软件手机版互联网营销模式有哪些

彻底告别Cursor试用限制:智能重置工具全解析 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Youve reached your trial request limit. / Too many free trial accounts used on this machine. Please upgrade to pro. We have this…

张小明 2026/1/17 16:43:33 网站建设

qq业务代理网站建设建一个网站要多久

Dify平台如何实现用户行为追踪与分析? 在智能客服系统频繁遭遇用户投诉“答非所问”,而开发团队却束手无策的今天,一个核心问题浮出水面:我们真的了解自己的AI是怎么工作的吗?当一次对话失败时,是提示词设计…

张小明 2026/1/17 16:43:34 网站建设

做动漫姓氏头像的网站房屋网站

PXE 引导与进程控制:自动化部署与监控实践 1. PXE 引导脚本解析 PXE(Preboot Execution Environment)引导是一种强大的自动化服务器部署方法。下面我们来详细解析相关脚本。 1.1 IP 地址转换 在处理 IPv4 地址时,我们需要在十进制和十六进制之间进行转换。例如: $ p…

张小明 2026/1/17 16:43:35 网站建设

学中文网站哪些网站设计的比较好

《变好的方法》:用心去生活和领导 引言与核心概念 这本书的标题是《变好的方法》,副标题为《用心去生活和领导》。书中强调“心”与“脑”的区别:脑代表认知(知道),心代表体验(做到&#xff0…

张小明 2026/1/17 7:32:56 网站建设