2026/2/9 15:51:40
网站建设
项目流程
建设银行网站用户名更改,石家庄seo网站推广,怎样在手机上运行wordpress,怎么弄一个公众号.NET程序员的20G文件上传历险记
大家好#xff0c;我是甘肃的一名苦逼.NET程序员#xff0c;最近接了个外包项目#xff0c;客户的需求简直是要我老命啊#xff01;来给大家扒一扒这个价值连城的项目需求#xff1a;
项目需求#xff1a;地狱级难度
大文件….NET程序员的20G文件上传历险记大家好我是甘肃的一名苦逼.NET程序员最近接了个外包项目客户的需求简直是要我老命啊来给大家扒一扒这个价值连城的项目需求项目需求地狱级难度大文件上传20G不是20M也不是2G是20G想想我的小水管服务器就瑟瑟发抖兼容性要求从IE8到现代浏览器全都要支持 - “总不能把业务机器扔掉吧”客户原话文件夹结构保留用户上传的文件夹可能有1000个分类文件还得保持层级断点续传关了浏览器、重启电脑都不能丢进度 - 这得用上黑魔法吧加密要求SM4、AES全都要传输存储都要加密预算100元以内还要求7×24小时技术支持、源代码、打包部署一条龙…技术选型在夹缝中求生存既然客户点名要WebUploader或原生JS预算又这么慷慨我只能选择…// 前端伪代码 - 用生命在兼容IE8varie8Flag/*cc_on!*/false;// 判断IE8的黑魔法if(ie8Flag){alert(亲您还在用IE8啊给您磕头了);// 这里要写一堆ActiveX和VBScript的兼容代码}else{// 现代浏览器可以用File API}文件夹上传的坑网上找的代码大多只支持文件上传文件夹上传保留层级结构自己造轮子吧// 后端C#处理文件夹结构的伪代码publicvoidHandleFolderUpload(HttpPostedFilefile,stringrelativePath){// relativePath是前端传来的文件夹相对路径stringserverPathPath.Combine(E:\\Uploads,relativePath);Directory.CreateDirectory(Path.GetDirectoryName(serverPath));file.SaveAs(serverPath);// 预算只够写伪代码了真实项目这里还要处理各种异常}断点续传实现思路前端分片计算文件哈希作为唯一标识后端记录已上传的分片信息用户中断后重新上传时先查询已上传分片// 前端断点续传逻辑functionresumeUpload(file){calculateFileHash(file).then(hash{$.get(/api/upload/progress?hashhash,function(data){// data返回已上传的分片列表uploadRemainingChunks(file,data.uploadedChunks);});});}加密传输方案// C# SM4加密示例简化版publicstringSM4Encrypt(stringinput,stringkey){// 这里应该是复杂的SM4算法实现// 但预算只够写个伪代码...return加密后的input假装加密了;}现实与理想的差距客户“这个功能很简单吧几天能做完”我内心OS几天给我几个月还差不多…表面“这个…我需要评估一下技术可行性…”给同行们的忠告接单前一定要评估需求合理性IE8支持真的是个大坑能推就推文件夹上传保留层级不是那么简单100元预算做这种需求…不如去要饭最后说点掏心窝子的话各位同行啊咱们程序员也要硬气一点。这种明显不合理的需求要么加钱要么拒绝。别为了接单把自己逼到绝路。至于那个QQ群广告…咳咳大家自己判断吧。反正我是不信什么2万项目提成1万的好事。真有这种好事他们为什么不自己接单呢最后的最后如果你真的非要做这个项目我建议先和客户重新谈需求和预算实在不行就用现成的商业解决方案虽然超预算真要自己实现做好加班到秃顶的准备祝你好运吧甘肃的程序员兄弟设置框架安装.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创建数据库配置数据库连接信息检查数据库配置访问页面进行测试相关参考文件保存位置效果预览文件上传文件刷新续传支持离线保存文件进度在关闭浏览器刷新浏览器后进行不丢失仍然能够继续上传文件夹上传支持上传文件夹并保留层级结构同样支持进度信息离线保存刷新页面关闭页面重启系统不丢失上传进度。下载完整示例下载完整示例