2013-04-29 88 views
3

下載一個控制檯返回以下錯誤:錯誤下載

Frame load interrupted by policy change

例子:

<a href="app.exe">Start Download</a> 

控制檯前瞻: enter image description here

我應該配置一些在編譯器QWebSettings

+0

也許 「EXE」 擴展名是這個過敏源。通常阻止可執行文件直接下載以避免惡意代碼。這可以解釋「政策」一詞。 – Ihsan 2013-05-07 06:55:45

+0

下載工作(我使用unsupportedContent(QNetworkReply *)和setForwardUnsupportedContent(true)),問題真的是奇怪的消息。我不知道這是什麼信息/錯誤。你能告訴我爲什麼出現?當我下載應該顯示取消,並沒有失敗(正常瀏覽器中發生)。我需要使用'QWebView-> setPage(new myClassPageRewrite())''編輯/重寫'函數'unsupportedContent'嗎? – 2013-05-07 19:23:48

回答

2

我發現了。 在傳統的Webkit瀏覽器中,下載控制檯的地方顯示了取消請求的方式,因此在轉向瀏覽器的「下載管理器」之前,請求應該被取消。

解決方案:

//replace [QWebView] by your WebView 
connect([QWebView]->page(), SIGNAL(unsupportedContent(QNetworkReply*)), 
this, SLOT(downloadContent(QNetworkReply*))); 

... 

void [main class]::downloadContent(QNetworkReply *reply){ 
    //Replace "[main class]" by "Class" having the signs used in WebView. 

    [QWebView]->stop(); 
    //solution: stop loading --replace [QWebView] by your WebView 

    /*function to donwload*/ 
} 
1

編輯:很難說沒有我在評論中要求的正確回溯,但看起來警告實際上可能是無害的。

原始: 這是因爲QWebViewdoesn't know如何處理你的app.exe文件做 - 這不是一個HTML頁面或text/plain文檔或圖像的支持,畢竟。 QWebView類不是一個Web瀏覽器;您顯然希望開始下載某個文件,但該類中沒有完整的下載管理器。你將不得不爲此提供自己的代碼 - 該代碼將不得不尋求合適的位置,以保存它,等

您可以QWebPage::setLinkDelegationPolicy啓動和處理這個特殊的點擊你自己。

+0

感謝您的回答,但我的代碼正常下載。 我沒有使用過'QWebPage :: setLinkDelegationPolicy'。 (QWebPage,SIGNAL(unsupportedContent(QNetworkReply *)),this,SLOT(signalDownload(QNetworkReply *)));''和'setForwardUnsupportedContent(true)',下載完全適用於它。 唯一的問題是'政策'的消息很奇怪(我不明白爲什麼這個政策或它是什麼)。如果你可以編輯你的答案,我將不勝感激。美好的一天。 – 2013-05-02 12:38:40

+0

我只能爲'mimetypes'設置'setLinkDelegationPolicy'無法識別?識別的mimetypes繼續正常工作(標準模式)? – 2013-05-02 12:41:39

+0

好的,我已經檢查過qtwebkit源代碼,看起來即使在相當無害的情況下也會打印警告。看到這個錯誤的回溯會很有趣 - 「WebCore :: MainResourceLoader :: stopLoadingForPolicyChange()」似乎是設置斷點的函數。堆棧跟蹤是怎樣的? – 2013-05-02 13:25:40