delphi压缩后使用http协议base64上传下载6G超大文件

注:服务端软件,使用高勇出品GYRestServer系列。欢迎使用,加QQ群咨询:174483085

一、知识点:

1、Delphi自带的压缩解压单元system.zlib.pas中核心函数的使用

2、服务端http协议ContentType(mime-type)相关列表类型的注册

3、Base64编码的规则

4、为何要分块断点续传,并使用TFileStream文件流替代内存流TMemoryStream

5、Buffer.size对Base64分块断点续传的影响

6、优化上传下载的速度与并发性能的综合考虑

二、直接看视频了解核心关键内容

从本博客资源下载:

delphi压缩后并使用http协议base64上传下载6G超大文件的演示即核心代码概要.mp4-Delphi文档类资源-CSDN下载知识点:1、Delphi自带的压缩解压单元system.zlib.pas中核心函数的使用;2、服务端更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/pulledup/46210881        或从本人百度网盘下载:

链接: https://pan.baidu.com/s/1Zpxfe5fJruuJW68x3dDTSw
                提取码:iqvo

三、其它的补充说明

3.1、优化上传下载的速度与并发性能的综合考虑

参考本博客博文:

浅谈服务器http并发数的影响因素_pulledup的博客-CSDN博客https://blog.csdn.net/pulledup/article/details/121383350

3.2、服务端http协议ContentType(mime-type)相关列表类型的注册

参考本博客博文:

delphi MimeType for Restful及delphi mime-type和文件扩展名对照表_pulledup的博客-CSDN博客delphi MimeType for Restful MimeType是你让编写的应用Restful化编程所必须的。delphi支持哪些MimeType,如何知道这些MimeType与文件扩展名的对应关系,以及它们是文本种类、二进制种类还是未定义的。一、先上代码 : 已附上面源码下载。由于代码引用了跨平台的文件存取,使用源码注意事项:1、在FormCre...https://blog.csdn.net/pulledup/article/details/105774767delphi XE应用Restful时Rest组件的delphi XE ContentType即delphi XE mime type怎样获取和表达_pulledup的博客-CSDN博客delphi XE应用Restful时Rest组件的delphi XE ContentType即delphi XE mime type怎样获取和表达一、usesREST.Types;//var //DefaultRESTRequestParameterKind: TRESTRequestParameterKind = TRESTRequestParameterKind.pkGETor...https://blog.csdn.net/pulledup/article/details/105749158

3.3、Buffer.size对Base64分块断点续传的影响

为何使用Base64?

如果你仅仅是上传下载,而无需下载后H5加载,可以不必非得使用TBase64Encoding来编解码。可参考本博客博文:

Delphi处理高速文件上传下载的代码及思路_pulledup的博客-CSDN博客Delphi处理高速文件上传下载的代码及思路 上传和下载是一对方向不同的概念,下面对应的客户端和服务器代码:掉个头,它就是下载;再掉个头,它就是上传。一、思路 1、将大文件:分段(即常说的“断点”上传或下载)上传或下载 2、分别上传或下载这些分段 3、将上传或下载后的各“分段”文件流合并还原 4、关于加速(网上你经常看到“高速”上传或下载):若多线程分别上传或下载这些分段,即可提速。 你们去使用 高勇老师的代码,它是完全...https://blog.csdn.net/pulledup/article/details/108660481

否则,请使用Base64,它可以对html和URL进行编解码。请直接使用高勇出品GYRestServer系列及其配套客户端GYRestClient.pas中的相关代码进行客制化。

Base64内容传输时需要注意的事项:

//http分块上传或下载时,需注意:block := (6*25)*7 * 1024 * 1;//=1050KB//:来超2021-11-19:提升服务器并发性能:拷贝分块大小,delphi默认32kb//block := 1024 * 1024 * 1;//:拷贝分块大小,每次拷贝1M://:(一次上传,最多不能超过25M,似乎超过了,就没有响应)//:Buffer不正确会对Base64分段产生无规律的不可预期的影响://:Base64----4组每组6位编码----块:6位字节的整数倍--以替换8位1组的二进制//:W3C标准:  https://datatracker.ietf.org/doc/html/rfc2045//:delphi默认buffer.size=32k,太小了://:1.1、客户会感觉太慢了//:1.2、某些服务器也可能做了限制:不允许连续发小包给它,它人为你是在http攻击//:buffer.size=N个KB,太大了://:2.1、客户端内存不允许:上限好像是忘了65535KB? 32768KB? 总之最好不要超过1M//:2.1、服务器并发时,//:内存(取决于服务器内存的大小)//:磁盘(取决服务器硬盘通道即单位时间IO速度)、//:网路带宽(取决你服务器的带宽)//:它们受不了大的“冲击波"

Base64 内容传输的W3C标准说明:

rfc2045        rfc2045        rfc2045

3.4、为何需使用TFileStream文件流替代内存流TMemoryStream

并发时,压缩解压也好、上传下载也好,或使用内存流TMemoryStream,内存的开销太大、而且内存很昂贵,使用文件流TFileStream替代内存流,会有效避免此问题。

用Delphi自带的system.zlib.pas库单元函数压缩解压时,要特别注意:

3.4.1、必要期待你能用常用的压缩解压工具,去打开system.zlib压缩文件,因为它是Delphi专用的压缩格式,加了密的;不过这样也很安全;

3.4.2、无论压缩环节还是解压环节均不要TStream.CopyFrom

因为这样,会丢失字节。而应当老实的用字节数组,逐个字节的读取或写入。

delphi压缩后使用http协议base64上传下载6G超大文件相关推荐

  1. php 百度网盘上传文件大小限制吗,百度云存储,curl_百度云存储如何上传数G超大文件(视频类)和防盗链等一系列问题,百度云存储,curl - phpStudy...

    百度云存储如何上传数G超大文件(视频类)和防盗链等一系列问题 最近在开发一个视频网站,打算用百度开放云平台上的云存储,但视频较大,一般有几个G(高清电影).1G一下的视频管理控制台里能用页面上传,但1 ...

  2. 上传/下载远程服务器文件

    需求说明   有时候我们需要对我们远程服务器的文件进行上传/下载功能,或者是我们拿到国外的Chicken了需要上传我们的Trojan来进行长久控制,再或者我们需要方便的拿到我们远程服务器上某某文件/文 ...

  3. .NET技术 ASP.NET中常用的文件上传下载方法(多文件上传)

    文件的上传下载是我们在实际项目开发过程中经常需要用到的技术,这里给出几种常见的方法,本文主要内容包括: 1.如何解决文件上传大小的限制 2.以文件形式保存到服务器 3.转换成二进制字节流保存到数据库以 ...

  4. 阿里云oss 使用, 基于Nginx 配置云服务器+oss的内网访问 , 及使用Java SDK 完成上传,下载,删除,查询文件列表操作

    一.同阿里产品,云服务器和存储对象oss-配置内网访问 阿里存储对象oss 地址: https://oss.console.aliyun.com/overview 配置须知 通过Nginx 进行网络转 ...

  5. java图片上传下载_java web 文件上传与下载

    组件工作流程:WEB服务器request ServletFil eupLoad DiskFileItem Factory代表普通字段的FileItem代表上传文件1FileItem代表上传文件2Fil ...

  6. aws s3 獲取所有文件_通过Java上传下载AWS S3文件,并解决文件数量超过1000的问题...

    1 前言 Amazon S3 (Simple Storage Service)是很常用的文件存储服务,我们的场景是上游把流水文件放到S3,我们再从S3读取并对账. 2 初始化S3 首先要获取相关的账号 ...

  7. FTP上传下载失败或文件为空

    这两天做了一个ftp文件上传和下载功能,开发中发现上传失败,没有将文件上传到服务器上面,下载的时候只是创建了一个文件,文件大小为0kb,两个ftp服务器互相传输也会出现种现象.这中现象都是因为编码格式 ...

  8. java流式上传下载_精讲RestTemplate第6篇-文件上传下载与大文件流式下载

    C++Templates(第2版英文版) 123.24元 (需用券) 去购买 > 本文是精讲RestTemplate第6篇,前篇的blog访问地址如下: 精讲RestTemplate第1篇-在S ...

  9. java图片上传下载_java实现文件的上传和下载

    1. servlet 如何实现文件的上传和下载? 1.1上传文件 参考自:http://blog.csdn.net/hzc543806053/article/details/7524491 通过前台选 ...

  10. .Net FTP文件上传下载及相关文件操作

    public class FtpHelper{string ftpServerIP;string ftpRemotePath;string ftpUserID;string ftpPassword;s ...

最新文章

  1. postfix导致maillog填满磁盘空间的巨坑!
  2. 现代软件工程讲义 8 软件的血型
  3. Qt笔记-Q3DScatter及QCustom3DItem的基本使用
  4. C# CLRInsideOut 托管代码与非托管代码互操作,产生相关调用代码的好工具 C++ 头文件转C# 的好工具...
  5. Codeforces 988D Points and Powers of Two 【性质】【卡常】
  6. 编译并使用kpath不重启更新linux-kernel
  7. Android中的文字占位符
  8. Java反序列化和JNDI注入
  9. C# 根据EXCEL自动生成oracle建表语句
  10. 第十八篇 难点突破之-VUE中使用 C-LODOP 实现模板的套打
  11. 指针万用表使用欧姆档测量电容器时偏转
  12. 使用短信验证方式登录短视频系统,轻松规避数据臃肿
  13. 在不知道密码情况下卸载企业版360
  14. 2020年执业药师考试,5个锦囊助你做好最后冲刺!
  15. halconc#软件收费吗_没事别想不开做Halcon机器视觉工程师
  16. Day134-136.尚品汇:平台属性接口、SPU、跨域问题、配置持久化、MinIO 分布式文件存储系统
  17. 四级地址库 国家标准的行政区划代码 省市区街道
  18. nginx负载均衡,服务器集群配置,服务器挂机自动切换
  19. 仿个人税务 app html5_你下载的个税APP可能是假的!当心抢你的钱!
  20. 基于bootstrap的现代浏览器博物馆

热门文章

  1. QQ音乐JS逆向爬虫,获取调皮的sign参数,我用python全都爬!
  2. python菜鸟教程 pdf-菜鸟教程 python pdf/Python菜鸟教程怎么样
  3. idea主题插件网址
  4. Java基础面试题整理
  5. GBase数据库事务隔离级别
  6. PASCAL程序设计语言 PDF 分享
  7. 有/无外网情况下linux安装宋体
  8. 计算机代数与数论pdf,计算机代数及数论(maple).pdf
  9. win10设置HTML桌面背景,Win10系统直接将视频设置为桌面背景的方法
  10. 二分排序法(折半排序)