CEF3关于文件下载的开放接口是CefDownloadHandler
,这个类的公开函数也挺简单的,就两个:一个是下载前OnBeforeDownload
,一个是下载状态更新OnDownloadUpdated
class CefDownloadHandler : public virtual CefBaseRefCounted {
public:
/// 文件下载前调用
// suggested_name (建议的)文件保存名
// callback 回调,用来通知下载动作继续进行。默认情况下,如果不主动调用这个回调,则会取消下载动作。
virtual void OnBeforeDownload(
CefRefPtr browser,
CefRefPtr download_item,
const CefString& suggested_name,
CefRefPtr callback) = 0;
/// 用来通知下载状态信息,包括下载进度、总大小、已完成大小、是否完成等;这个方法可能会被调用多次,以用来持续更新下载状态
// download_item 下载项,下载的状态信息保存在这里。
// callback 回调,用来取消/暂停/恢复/下载。默认情况下,如果不主动调用这个回调,则会继续下载。
virtual void OnDownloadUpdated(CefRefPtr browser,
CefRefPtr download_item,
CefRefPtr callback) {}
};
需要注意的是,上面两个方法都有一个download_item
参数,这个参数是不能在上面两个方法的作用域外使用的。