目前我有我的HTML,JS,CSS,圖形等本地存儲在硬盤上並使用QWebFrame::SetUrl(QUrl::fromLocalFile("appFolder\html\index.html"))
訪問它們。在某些時候,我將需要加密本地存儲的文件,所以我正在尋找一種方法來解密它們,或者將它們全部解密到內存中並以這種方式訪問它們。使用QTWebKit顯示存儲在內存中的網站
我知道我可以使用QWebFrame::setContent(htmlData)
從內存加載HTML,所以我可以加載加密的HTML文件,解密它在內存中,然後以這種方式顯示,但我怎麼會去其他數據(JS,CSS,圖形等),它目前存儲在子文件夾中?
另外,有沒有一種方法可以攔截訪問所有HTML,JS,CSS等文件的請求,並在加載時解密它們?
通過使用我自己的NetworkAccessManager
我可以攔截對createRequest
的調用,以便我可以看到每個文件何時加載,但我看不到如何使用它來動態解密數據。我還可以將插槽功能連接到finished(QNetworkReply*)
信號,但是在那一點上數據已經被讀取 - QIODevice
的當前位置指向文件的結尾。
我會非常感謝任何意見或指針在正確的方向。
您應該繼承QNetworkReply類並在QNetworkAccesManager :: createRequest()中使用它。在完成()之前,您可以在這個新類中修改原始數據(在您的情況下解密html)。 – Johnny
@約翰尼:謝謝 - 這當然會讓我走上正軌。實施起來還很遙遙無期,但指出正確的方向是件好事。查看QFileNetworkReply.cpp對於查看他們如何將QNetworkReply用於本地文件訪問也非常有用。如果您想在回答中對您的評論進行一點說明,我會將其標記爲已接受。如果不是的話,我會把代碼的大綱作爲答案。再次感謝 - 你肯定幫我解決了問題。 – Rok