日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/9 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 delphi压缩后使用http协议base64上传下载6G超大文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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超大文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。