2026/4/17 7:28:27
网站建设
项目流程
网站在什么环境下做,中国建设銀行网站投诉电话,自己建企业网站怎么建,龙华区属于深圳哪个区《一个.NET码农的奇幻漂流——20G文件上传历险记》
甲方需求说明书#xff08;魔幻现实主义版#xff09;
“兄弟#xff0c;我们要做个能在IE8上传20G文件的功能#xff0c;要支持文件夹结构保留、断点续传、加密传输#xff0c;预算是100块哈#xff01;对了#xf…《一个.NET码农的奇幻漂流——20G文件上传历险记》甲方需求说明书魔幻现实主义版“兄弟我们要做个能在IE8上传20G文件的功能要支持文件夹结构保留、断点续传、加密传输预算是100块哈对了7×24小时售后别忘了” —— 这是我见过最硬核的外包需求没有之一。技术栈的魔幻组合前端Vue3 CLI 原生JS WebUploader 为IE8写polyfill写到怀疑人生后端ASP.NET WebForm是的2023年了还有人用这个数据库SQL Server甲方说Access不够专业预算100元包含我的精神损失费前端部分代码展示可能会引起不适// 文件ie8-support.js// 这个文件的作用是让我保持清醒不要摔键盘functionsupportIE8(){if(navigator.userAgent.indexOf(MSIE 8)-1){alert(尊敬的IE8用户建议您\n1.升级浏览器\n2.换个电脑\n3.换个需求);thrownewError(程序员自杀式异常);}}// 文件big-file-upload.jsfunctionupload20GBFile(file){returnnewPromise((resolve,reject){// 先检查硬盘空间if(file.size20*1024*1024*1024){reject(您是想上传整个Steam游戏库吗);return;}// 模拟加密过程constencryptedData假装加密的file.name;// 分片上传逻辑constchunkSize5*1024*1024;// 5MBletuploaded0;// 从localStorage恢复进度constsavedProgresslocalStorage.getItem(upload_file.name);if(savedProgress){uploadedparseInt(savedProgress);console.log(从上次的${uploaded}字节继续上传);}// 模拟上传过程constintervalsetInterval((){uploadedchunkSize;localStorage.setItem(upload_file.name,uploaded);if(uploadedfile.size){clearInterval(interval);resolve(成功上传${file.name}(理论上));}},1000);});}后端C#代码WebForm风格// FileUploadHandler.ashxpublicclassFileUploadHandler:IHttpHandler{publicvoidProcessRequest(HttpContextcontext){// 检查预算是否足够if(context.Request.Headers[Budget]!100){context.Response.Write({\error\:\预算不足请充值\});return;}try{varfilecontext.Request.Files[0];// 验证文件大小if(file.ContentLength21474836480){context.Response.Write({\error\:\20G您这是要上传蓝光原盘吗\});return;}// 加密存储varsavePathPath.Combine(E:\\,Guid.NewGuid().encrypted);file.SaveAs(savePath);// 假装加密了File.WriteAllText(savePath.meta,$原文件名{file.FileName}\n加密方式脑补加密);context.Response.Write({\success\:true});}catch(Exceptionex){context.Response.Write(${{\error\:\{ex.Message}\}});}}publicboolIsReusablefalse;}真实开发心路历程第一天研究WebUploader文档充满希望第三天发现IE8不支持File API开始怀疑人生第五天尝试用ActiveX控件被现代浏览器禁用第七天考虑转行送外卖给同行的血泪建议接外包前务必确认浏览器兼容性要求功能范围预算是几个零对于这种需求合理报价应该是兼容IE85000元20G文件上传8000元7×24小时支持10000元总价100元告辞我们的接单群广告时间欢迎加入QQ群374992201这里有被甲方虐待的程序员同伴分享不靠谱外包经验的难友偶尔出现的真·大神1-99元随机红包90%概率是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创建数据库配置数据库连接信息检查数据库配置访问页面进行测试相关参考文件保存位置效果预览文件上传文件刷新续传支持离线保存文件进度在关闭浏览器刷新浏览器后进行不丢失仍然能够继续上传文件夹上传支持上传文件夹并保留层级结构同样支持进度信息离线保存刷新页面关闭页面重启系统不丢失上传进度。下载完整示例下载完整示例