当前位置: 首页 > news >正文

有没有ASP.NET示例代码展示大文件的目录结构断点续传?

《一个卑微.NET程序员接的离谱外包项目》

大家好,我是一个挣扎在深圳温饱线的.NET程序员。最近接了个外包项目,客户要求那叫一个刺激…让我用原生JS实现20G大文件上传下载,还得兼容IE8!预算100块还要求7*24小时服务!来,咱们一起看看这个"梦想"项目怎么实现。

项目需求再品鉴

  1. 文件大小:20G!这不是上传文件,这是上传整个青春啊
  2. 兼容性:IE8!这浏览器比我侄子的年纪都大
  3. 功能:文件夹上传保留层级,断点续传,加密传输
  4. 预算:100块!还不够我买杯星巴克提神
  5. 服务:7*24小时!比我女朋友还粘人

技术选型:在夹缝中求生

前端方案

// 检测IE8的"优雅"方式functionisIE8(){return/*@cc_on!@*/false||document.documentMode===8;}// IE8下的"现代"解决方案if(isIE8()){alert("您的浏览器太老了,建议升级!但我知道您不会听...");// 这里只能上Flash方案了,虽然Adobe早就不维护了document.write('...');}else{// 正常人用的现代方案constuploader=newModernUploader();}

后端C#处理

// 处理20G文件的ASP.NET代码publicvoidUploadFile(){try{varrequest=HttpContext.Current.Request;if(request.Files.Count>0){// 检查磁盘空间 - 毕竟20G呢vardrive=newDriveInfo("E");if(drive.AvailableFreeSpace<20L*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_progress=newDictionary();publiclongGetProgress(stringfileId){if(_progress.ContainsKey(fileId))return_progress[fileId];return0;}publicvoidUpdateProgress(stringfileId,longprogress){_progress[fileId]=progress;}}

项目总结与感悟

  1. 技术可行性:理论上可能,实际上要命
  2. 经济可行性:100块连测试IE8的虚拟机都买不起
  3. 人生建议:这种项目还是留给"有梦想"的年轻人吧

最后送给大家一句金玉良言:“有些钱,真的没必要赚”。我现在就准备退群删好友连夜买站票跑路,这100块的红包谁爱抢谁抢吧!

(注:以上代码纯属娱乐,切勿用于实际项目。真要实现这种需求,建议预算后面至少加4个零,或者直接劝客户放弃IE8)

设置框架

安装.NET Framework 4.7.2
https://dotnet.microsoft.com/en-us/download/dotnet-framework/net472
框架选择4.7.2

添加3rd引用

编译项目

NOSQL

NOSQL无需任何配置可直接访问页面进行测试

SQL

使用IIS
大文件上传测试推荐使用IIS以获取更高性能。

使用IIS Express

小文件上传测试可以使用IIS Express

创建数据库

配置数据库连接信息

检查数据库配置

访问页面进行测试


相关参考:
文件保存位置,

效果预览

文件上传

文件刷新续传

支持离线保存文件进度,在关闭浏览器,刷新浏览器后进行不丢失,仍然能够继续上传

文件夹上传

支持上传文件夹并保留层级结构,同样支持进度信息离线保存,刷新页面,关闭页面,重启系统不丢失上传进度。

下载完整示例

下载完整示例

http://www.jsqmd.com/news/366683/

相关文章:

  • 2026 保定英语雅思培训教育机构推荐:雅思培训课程中心权威口碑榜单 - 苏木2025
  • 深耕蓉城家装十余载 成都里林设计以专业与匠心打造全维度家装服务体系 - 推荐官
  • 萤石开放平台 音视频 | 取流协议说明
  • 2026 佛山英语雅思培训教育机构推荐,雅思培训课程中心权威口碑榜单 - 苏木2025
  • 【Python全栈开发】第2讲 | 数据结构全实战、流程控制与 Pythonic 迭代艺术
  • 2026 兰州英语雅思培训教育机构推荐,雅思培训课程中心权威口碑榜单 - 苏木2025
  • 警惕“内存泄漏”:为什么90%的人把“核心-卫星”配成了情绪提款机?
  • 2026 兰州英语雅思培训教育机构推荐、雅思培训课程中心权威口碑榜单 - 苏木2025
  • 2026 北京英语雅思培训教育机构推荐;雅思培训课程中心权威口碑榜单 - 苏木2025
  • 军工领域中ASP.NET大文件上传组件如何保证断点续传的安全性?
  • 成都攀成钢板块深度分析
  • ‌脚本质量门禁:CodeBERT在自动化代码坏味道检测的规则引擎‌
  • 【Python零基础到精通】特别篇 | 浪漫至死不渝:用代码打造 3D 交互深空爱心实验室
  • 2026 北京英语雅思培训教育机构推荐、雅思培训课程中心权威口碑榜单 - 苏木2025
  • 别让老板等:千人并发下的实时大屏极致性能优化实录
  • 交叉编译(一)
  • 如何在.NET WebForm中实现网页端大文件的分片断点续传?
  • 当代码门禁遇上大模型,测试效率的革命性跃迁
  • 综述不会写?AI论文软件 千笔写作工具 VS WPS AI,本科生专属神器!
  • 2026年地坪生产厂家最新推荐排行榜:聚焦国内优质厂商,助力选购高性价比金刚砂/环氧/混凝土/球场用地坪 - 深度智识库
  • DiffPure技术机制与测试工具链整合方案
  • 新手也能上手 9个一键生成论文工具测评:自考毕业论文+格式规范全攻略
  • 2026年主流GEO服务商深度评测:技术代差之下,企业如何选择? - 品牌策略主理人
  • 2026 南宁英语雅思培训教育机构推荐、雅思培训课程中心权威口碑榜单 - 苏木2025
  • 双引擎驱动:测试资产复用的技术革命与落地实践
  • 进阶篇:从手写深拷贝到 std::string 与移动语义(Rule of Five)
  • ‌协议安全审计:NLP解析SSL/TLS握手漏洞的自动化扫描器‌
  • 贵州工业地坪解决方案指南 固化剂/环氧/金刚砂地坪优选 贵州惠博特专属定制 - 深度智识库
  • LoRa智能网关在智慧城市市政设施监控中的功能作用
  • 2026精选10家高清壁纸素材网站推荐,商用正版适配电商、设计全场景 - 品牌2026