# BigFileUploadDemo **Repository Path**: Tony_df/big-file-upload-demo ## Basic Information - **Project Name**: BigFileUploadDemo - **Description**: 大文件上传方案,网页端和服务端 - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 2 - **Created**: 2021-01-22 - **Last Updated**: 2025-07-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # BigFileUploadDemo #### 介绍 本方案提供两种大文件上传场景案例 1.网页端上传 2.客户端上传 特色:该方案支持文件验证,断点续传,提供dotnet core和dotnet framework两种环境demo 不足:上传较大文件时验证时长较长 #### 新增功能 & Bug修复 * 2021-1-27 - 1.新增word和excel文件转pdf(感觉这个文件上传好像可以扩展出好多东西来,有要做成一个小工具包的趋势) 注意:因为引用了第三方的组件,该组件为非开源组件,故本例不上传该组件,需用户自行引用,组件名称在代码中可以看到 * 2021-1-26 - 1.新增跨域配置,.net core版本和.net framework均添加,其中.net core配置了白名单和完全公开两种跨域方式.net framework需引入system.web.http.cors命名空间,对应的包放在了#include里 - 2.新增tinyMCE富文本编辑器演示,可借助原来写的接口直接完成在编辑器内上传图片和文件,tinyMCE中文文档:http://tinymce.ax-z.cn/ - 3.新增tinyMCE插件图片批量上传 - 4.新增获取,设定富文本内容操作 * 2021-1-25 - 1.增加.net framework环境下的网页上传demo * 2021-1-24 - 1.dotnet core项目,支持网页端上传 - 2.增加客户端上传方式 - 3.支持断点续传,文件验证 - 4.引入fcup等第三方前端插件,丰富页面功能和展示 --- ### 注意事项 1.本demo使用的开发组件和页面插件为非必须,仅为本demo方便演示使用,非核心组件 比较重要的插件是fcup.js,仓库地址:https://gitee.com/lovefc/fcup2.git 2.fcup.js集成了SparkMD5工具包,之所以在上传前验证文件MD5值,主要是在后台做区分,其实也可以不验证,在后台可以直接使用文件名 但这样就不够严谨,用md5的好处就是,同一个文件,比如只是简单修改了一个标点符号,最后生成的md5值也是不一样的,但是如果只是 修改文件名或者后缀,md5值是不变的,文件签名算法只针对内容做验证,修改文件属性是不会修改文件md5值的。 可参考这篇文章:《百度云是如何识别出 A 片的? - 网络安全 - 知乎》地址是: 3.如果我们有自己的文件判定逻辑,那可以不做md5验证,毕竟超过200M的文件,在前端做md5校验还是比较费时间的 4.本例均已配置好跨域选项。 注意客户端网站支持跨域本身是有风险的,如有需要,则需要增加验证环节,比如增加一个校验参数该校验参数一定要在后台生成,且需要包含时间戳内容,解密后可据此来设定参数的有效期。 5.精力有限,framework版本近期仍会持续维护,但更新时间可能会比.net core版本稍晚。 #### 软件架构 软件架构说明 开发框架:dotnetcore 3.1,dotnetframework 4.6.2 网页框架:bootstrap(非必须) 页面插件:fcup.js,jquery.toast.js(非必须) 开发组件:restsharp,stackexchange.redis(非必须) #### 使用说明 网页端:运行BigFileUploadDemo即可在网页进行上传大文件操作 客户端:先运行BigFileUploadDemo作为服务端,在运行ClientUploader,编写好输入参数即可。输入参数为要上传的文件路径; 使用时可修改此代码,比如可以把单文件上传改成支持批量上传的模式,也可以编写调用批处理程序(bat文件)输入文件路径做自动化处理 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 写在最后 如果您觉得该方案对您有帮助,请手下留星!!