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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

cef使用缓存_CEF 文件下载功能实现

發布時間:2025/3/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cef使用缓存_CEF 文件下载功能实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CEF 下載功能非常容易拓展,它提供了豐富的接口和控制功能,比如對正在下載的文件實現暫停、繼續、取消等操作。并且 CEF 還幫我們默認實現了一個另存為的對話框,如果不是必須你甚至都不需要去自己實現這個保存對話框。接下來我們來看 CEF 對于下載功能提供的兩個接口(使用 cefclient 項目舉例)

繼承 CefDownloadHandler

在一切開始之前,首先你的 ClientHandler 要繼承 CefDownloadHandler 類:

該類提供了兩個接口,分別是 OnBeforeDownload 和 OnDownloadUpdated,前者是在下載任務開始之前就會被回調的一個接口,你需要根據你的需求在該接口中實現一些預處理操作。后者是任務下載過程中的回調接口,包含了任務的進度、狀態以及控制功能。下面分別詳細介紹兩個接口。

OnBeforeDownload 接口

virtual void OnBeforeDownload(

CefRefPtr browser,

CefRefPtr download_item,

const CefString& suggested_name,

CefRefPtr callback) = 0;

上面介紹到該接口會在文件開始下載前被調用,

browser 參數表示當前實例

download_item 中包含了該下載任務的狀態信息,可以通過其成員函數 IsInProgress,IsComplete,IsCanceled 等方法判斷文件的當前狀態,但在下載文件之前去判斷這些貌似沒有什么意義。

suggested_name 代表當前 CEF 幫你設定好的建議保存名稱,一般會截取文件路徑中最后的文件名作為建議名稱。

callback 這個參數比較重要,當你調用了 callback 的 Continue 方法后,任務就開始下載了,該回調第一個參數 download_path 就是保存文件的名稱,第二個參數表示是否彈出保存對話框,當把第二個參數設置為 true 時,CEF 會幫我們彈出一個 Save File 的保存對話框。如果你設置為 false 了,那么將不彈出保存對話框,并自動保存文件到第一個參數設定的路徑下。

通過該接口我們可以對任務做一些預處理,比如當你想在界面中創建一個下載任務時,可以通過 download_item 參數獲得任務 ID(GetId 方法)交給 UI 去表示任務即將開始。接下來進入下面的下載任務狀態更新函數時,再根據任務 Id 去更新界面內容。

OnDownloadUpdated 接口

該接口在任務下載過程中被回調,但據我測試,這個接口會優先于 OnBeforeDownload 接口被調用,具體原因還是不太了解,不過無傷大雅,我們只關注這里的任務進度、狀態和控制功能就可以了。

virtual void OnDownloadUpdated(CefRefPtr browser,

CefRefPtr download_item,

CefRefPtr callback) {}

browser 這個不多介紹了

download_item 與上面介紹的一樣,可以獲取任務的進度、狀態、下載速度、已經下載量等,可以看一下 CefDownloadItem 的接口看一下都有什么控制功能。

callback 這里的 callback 和上面接口的 callback 是不一樣的,這個 callback 可以控制任務的暫停、繼續、停止等操作,你可以維護一份當前任務的列表將該 callback 與任務 Id 綁定,當界面傳來暫停任務的控制消息時,可以通過任務 Id 到列表中找到這個 callback,調用 callback 的 Pause 方法來暫停任務。當然別忘記在任務完成或者被取消的時候從列表中移除這些 callback 和任務 Id 的綁定關系。

總結

CEF 提供的下載接口控制功能還是很豐富的,甚至將進度中下載的速度都幫你計算完成你可以直接使用的。如果想配合 UI 實現一些個性化的展示都是可以完成的。大家可以自己試一試,遇到任何技術問題歡迎在下方討論。

相關

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的cef使用缓存_CEF 文件下载功能实现的全部內容,希望文章能夠幫你解決所遇到的問題。

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