网站美工和平面设计单页网站开发
网站美工和平面设计,单页网站开发,做装修的应该去哪网站找客户,诏安网站建设《一个卑微.NET程序员接的离谱外包项目》
大家好#xff0c;我是一个挣扎在深圳温饱线的.NET程序员。最近接了个外包项目#xff0c;客户要求那叫一个刺激…让我用原生JS实现20G大文件上传下载#xff0c;还得兼容IE8#xff01;预算100块还要求7*24小时服务#xff01;来…《一个卑微.NET程序员接的离谱外包项目》大家好我是一个挣扎在深圳温饱线的.NET程序员。最近接了个外包项目客户要求那叫一个刺激…让我用原生JS实现20G大文件上传下载还得兼容IE8预算100块还要求7*24小时服务来咱们一起看看这个梦想项目怎么实现。项目需求再品鉴文件大小20G这不是上传文件这是上传整个青春啊兼容性IE8这浏览器比我侄子的年纪都大功能文件夹上传保留层级断点续传加密传输预算100块还不够我买杯星巴克提神服务7*24小时比我女朋友还粘人技术选型在夹缝中求生前端方案// 检测IE8的优雅方式functionisIE8(){return/*cc_on!*/false||document.documentMode8;}// IE8下的现代解决方案if(isIE8()){alert(您的浏览器太老了建议升级但我知道您不会听...);// 这里只能上Flash方案了虽然Adobe早就不维护了document.write(...);}else{// 正常人用的现代方案constuploadernewModernUploader();}后端C#处理// 处理20G文件的ASP.NET代码publicvoidUploadFile(){try{varrequestHttpContext.Current.Request;if(request.Files.Count0){// 检查磁盘空间 - 毕竟20G呢vardrivenewDriveInfo(E);if(drive.AvailableFreeSpace20L*1024*1024*1024){thrownewOutOfDiskSpaceException(老板该加硬盘了);}// 这里应该有很复杂的处理逻辑...// 但预算只有100块所以...request.Files[0].SaveAs(E:\\temp\\request.Files[0].FileName);}}catch(Exceptionex){// 100块的项目就别考虑错误处理了thrownewException(出错啦但我不会告诉你具体原因反正你也不会加钱,ex);}}文件夹层级保持的黑科技// 前端获取文件夹结构的神奇代码functiongetFolderStructure(element){if(isIE8()){// IE8下获取文件夹结构开玩笑呢alert(IE8不支持文件夹上传但客户说要兼容...);return[];}// 现代浏览器可以webkitRelativePathletstructure[];for(letfileofelement.files){if(file.webkitRelativePath){structure.push(file.webkitRelativePath);}else{// 普通文件上传structure.push(file.name);}}returnstructure;}断点续传的经济型实现// 断点续传服务端实现publicclassResumeService{// 用数据库记录进度100块预算用不起privatestaticDictionary_progressnewDictionary();publiclongGetProgress(stringfileId){if(_progress.ContainsKey(fileId))return_progress[fileId];return0;}publicvoidUpdateProgress(stringfileId,longprogress){_progress[fileId]progress;}}项目总结与感悟技术可行性理论上可能实际上要命经济可行性100块连测试IE8的虚拟机都买不起人生建议这种项目还是留给有梦想的年轻人吧最后送给大家一句金玉良言“有些钱真的没必要赚”。我现在就准备退群删好友连夜买站票跑路这100块的红包谁爱抢谁抢吧注以上代码纯属娱乐切勿用于实际项目。真要实现这种需求建议预算后面至少加4个零或者直接劝客户放弃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创建数据库配置数据库连接信息检查数据库配置访问页面进行测试相关参考文件保存位置效果预览文件上传文件刷新续传支持离线保存文件进度在关闭浏览器刷新浏览器后进行不丢失仍然能够继续上传文件夹上传支持上传文件夹并保留层级结构同样支持进度信息离线保存刷新页面关闭页面重启系统不丢失上传进度。下载完整示例下载完整示例