4GB 以上超大文件上传和断点续传服务器的实现
随着视频网站和大数据应用的普及, 特别是高清视频和 4K 视频应用的到来, 超大文件上传已经成为了日常的基础应用需求.
但是在很多情况下, 平台运营方并没有大文件上传和断点续传的开发经验, 往往在网上找一些简单的 PHP 或者 Java 程序来实现基本的上传功能, 然而在实际使用中会发现, 这些基于脚本语言实现的上传功能模块性能很弱, 一是不支持 2GB 以上的内容上传; 二是无法支持断点续传; 三是效率极低, 单台服务器最多支持几十个并发上传连接.
当前我们要搭建一个运营级的视频服务平台, 在尝试了各种产品均无法满足要求, 因此最后花精力自主用 C++ 语言实现了这一高性能上传服务器.
项目地址:
http://Git://10.168.4.241/up6/web/ASP.NET.Git http://Git//10.168.4.241/up6/Web/ASP.NET.Git
Hyper Upload Server 超级上传服务器
这是一款超级文件上传服务器, 采用异步 I/O 架构, 采用 C++ 语言编码实现. 它支持 4GB 以上超大文件上传和断点续传, 支持 Windows 和 Linux 服务器平台, 支持任意格式的文件上传, 尤其适合大的视频网站应用. 单台服务器支持 1000 并发上传进程, 支持 PC 端和智能手机端主流的浏览器.
主要特性
1. 服务器端采用异步 I/O 架设设计, 具有高性能 I/O 处理能力, 尤其适用于超大文件上传;
2. 服务器端采用高效内存分配技术确保在运行过程中服务器的内存开销最小化;
3. 完全采用标准协议实现, 因此兼容几乎所有的 PC 端和移动端浏览器;
4. 服务器端采用 C++ 语言自主实现, 对上传文件的尺寸无限制, 天生支持超大文件上传.
而基于 PHP,JAVA 等技术实现的文件上传服务天生无法支持超大文件上传, 无法逾越 2GB 的最大文件尺寸瓶颈;
5. 服务器端采用无缓冲即时写入方式, 上传数据写入一步到位. 不同于 PHP,JAVA 等技术实现方式需要两步写入;
6. 服务器端可跨平台编译运行, 支持 Windows 和 Linux 平台;
7. 高性能, 单台服务器支持 1000 个并发上传进程;
8. 支持 4GB 以上超大文件上传, 文件大小不受限制;
9. 客户端支持采用 HTTP 标准协议上传;
10. 支持断点续传, 断网, 关机重启均不受影响;
11. 支持 html5 浏览器上传进度实时显示;
12. 支持 IE8 及以上浏览器上传进度显示;
13. 支持查看客户端在线连接, 查看方法: http://ip:port/lists
14. 多浏览器兼容, 包括 Chrome,Firefox,Safari,IE,Opera,Edge;
安装
第一步: 解压文件到一个硬盘目录, 例如 d:\UploadServer
第二步: 修改配置文件
修改 d:\UploadServer\conf\config.xml, 文件里的目录设置,
将所有 dir= 变量指向的目录修改为硬盘上的真实目录, 如果没有就按配置文件创建;
第三步: 安装服务
执行 cmd 打开命令行窗口按步骤输入以下命令:
- d: <br/>
- cd UploadServer
- HYFileServer.exe -i
第四步: 启动服务
打开系统的服务管理器, 找到 Hyper Http Upload Service 服务启动它.
第五步: 在浏览器里输入 http://127.0.0.1:8080 查看服务器运行是否正常
如果上传页面正常显示说明安装成功
点击其中一个上传文件链接 按钮来上传一个文件.
如果要在其它主机上访问上传服务器页面, 请将 127.0.0.1 用安装服务器的 IP 地址取代.
如果外部机器还不能访问, 请检查防火墙的设置, 看一下默认的 8080 端口是否开启.
第六步: 如果要进一步了解上传服务器, 请查看 d:\UploadServer\doc \ 文件上传服务器使用手册. PDF 文件.
- Linux 下执行安装
./hyupdsrv
如果要作为守护进程, 执行
./hyupdsrv -d
详细配置可以参考我写的这篇文章:
来源: http://www.bubuko.com/infodetail-3329357.html