4GB以上超大文件上传和断点续传服务器的实现

随着视频网站和大数据应用的普及,特别是高清视频和4K视频应用的到来,超大文件上传已经成为了日常的基础应用需求。

但是在很多情况下,平台运营方并没有大文件上传和断点续传的开发经验,往往在网上找一些简单的PHP或者Java程序来实现基本的上传功能,然而在实际使用中会发现,这些基于脚本语言实现的上传功能模块性能很弱,一是不支持2GB以上的内容上传;二是无法支持断点续传;三是效率极低,单台服务器最多支持几十个并发上传连接。

当前我们要搭建一个运营级的视频服务平台,在尝试了各种产品均无法满足要求,因此最后花精力自主用C++语言实现了这一高性能上传服务器。

项目地址:

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://blog.ncmem.com/wordpress/2019/08/09/%e5%be%80%e6%9c%8d%e5%8a%a1%e5%99%a8%e4%b8%8a%e4%bc%a0%e5%a4%a7%e6%96%87%e4%bb%b6/

B/S之大文件分段上传、断点续传的更多相关文章

  1. Asp.net mvc 大文件上传 断点续传

    Asp.net mvc 大文件上传 断点续传 进度条   概述 项目中需要一个上传200M-500M的文件大小的功能,需要断点续传.上传性能稳定.突破asp.net上传限制.一开始看到51CTO上的这 ...

  2. vue之大文件分段上传、断点续传

    需求: 支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验: 内网百兆网络上传速度为12MB/S 服务器内存占用低 支持文件夹上传,文件夹中的文件数量达到1万个以上,且包 ...

  3. php之大文件分段上传、断点续传

    前段时间做视频上传业务,通过网页上传视频到服务器. 视频大小 小则几十M,大则 1G+,以一般的HTTP请求发送数据的方式的话,会遇到的问题:1,文件过大,超出服务端的请求大小限制:2,请求时间过长, ...

  4. javascript之大文件分段上传、断点续传(一)

    需求: 支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验: 内网百兆网络上传速度为12MB/S 服务器内存占用低 支持文件夹上传,文件夹中的文件数量达到1万个以上,且包 ...

  5. js之大文件分段上传、断点续传

    文件夹上传:从前端到后端 文件上传是 Web 开发肯定会碰到的问题,而文件夹上传则更加难缠.网上关于文件夹上传的资料多集中在前端,缺少对于后端的关注,然后讲某个后端框架文件上传的文章又不会涉及文件夹. ...

  6. java之大文件分段上传、断点续传

    文件上传是最古老的互联网操作之一,20多年来几乎没有怎么变化,还是操作麻烦.缺乏交互.用户体验差. 一.前端代码 英国程序员Remy Sharp总结了这些新的接口 ,本文在他的基础之上,讨论在前端采用 ...

  7. Asp.net mvc 大文件上传 断点续传 进度条

    概述 项目中需要一个上传200M-500M的文件大小的功能,需要断点续传.上传性能稳定.突破asp.net上传限制.一开始看到51CTO上的这篇文章,此方法确实很不错,能够稳定的上传大文件,http: ...

  8. java+大文件分段上传

    一. 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件夹进行上传:支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传.刷新页面后继续传输. ...

  9. JS大文件上传断点续传解决方案

    1 背景 用户本地有一份txt或者csv文件,无论是从业务数据库导出.还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工.挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通 ...

随机推荐

  1. Golang 传递任意类型的切片

    肯定有这样的一种场景,写一个函数,该函数可以接收任意类型的切片,完成相应的功能. 就好比这种情况 intSlice := []int{1,2,3,4,5,6,7,8} strSlice := []st ...

  2. Go基础编程实践(一)—— 操作字符串

    修剪空格 strings包中的TrimSpace函数用于去掉字符串首尾的空格. package main import ( "fmt" "strings" ) ...

  3. ALV报表——发送Excel报表邮件

    ABAP发送报表邮件 运行效果: 代码: *&---------------------------------------------------------------------* *& ...

  4. bootstrap-wizard向导插件的使用

    引用文件 <link rel="stylesheet" href="bootstrap-wizard/bootstrap-wizard.css"> ...

  5. Redis 多级缓存架构和数据库与缓存双写不一致问题

    采用三级缓存:nginx本地缓存+redis分布式缓存+tomcat堆缓存的多级缓存架构 时效性要求非常高的数据:库存 一般来说,显示的库存,都是时效性要求会相对高一些,因为随着商品的不断的交易,库存 ...

  6. onActivityResult方法的使用

    转发自:https://blog.csdn.net/hacker_crazy/article/details/78345450 在进行界面间的跳转和传递数据的时候,我们有的时候要获得跳转之后界面传递回 ...

  7. js-Date对象(九)

    一.Date对象的创建1.new Date()[创建当前时间对象]eg: var date = new Date(); console.log(date); //Thu Jul 18 2019 18: ...

  8. 遍历js中的数组

    可以使用js中的for循环,或者forEach方法:也可以使用Ext中的方法遍历js中的数组 代码如下: /** * 遍历数组 */ var arr = ['越南', '新加坡', '美国', '俄罗 ...

  9. http请求的几种content-type

    1. 2.二进制文件 3.form-data 数据:a=1 总结: 1.对于我自己的写的服务来说,只要是raw,接收到的都是二进制字符: 2.如果是urlencode,接收到的是拼接的字符串(和使用p ...

  10. 【robotframework】pycharm+robotframe

    一.环境搭建 二.框架介绍 1.settings 是这个测试套件的全局配置表 说明这个测试套件要使用的测试库.资源文件 测试套件的环境初始化(setup)和清除(teardown) 该套件内的标签等 ...