我正在嘗試查看在線找到的 Pdf 文件。
通常,當我嘗試開啟 Pdf 檔案時,Firefox 會在其預設 Pdf 檢視器(我相信稱為 pdfjs)中顯示它。這是良好且正常的行為。
然而……
對於我在網上找到的這個特定的 Pdf,我單擊其位置的鏈接,Firefox 會彈出下載對話框。它將文件描述為“二進製文件”,儘管該文件是我可以本地下載和查看的 Pdf。
我假設網頁伺服器是“不告訴」 Firefox 認為這個 Pdf 檔案實際上是一個 Pdf 檔案。因此 Firefox 只能假設它是一個「二進位檔案」。
這促使我想知道這個問題...
如果我再次遇到這種煩惱,我可以不下載該檔案嗎?力量Firefox 在其預設 Pdf 檢視器中開啟檔案(線上或其他方式)?
嘗試過的解決方案:
- 我嘗試了來自的答案如何手動呼叫firefox內建pdf檢視器(pdf.js)?,但無濟於事。 Firefox 只是嘗試下載“二進位”。
- 我添加
view-source:
到 Pdf 位置的開頭(即view-source:https://www.website.com/pdf.pdf
),我只是獲取 Pdf 文件顯示的原始 ASCII 文字。
PS:我使用的是 Firefox 48.0.2 ...
是的,它很舊......
按照要求:
答案1
網站可以透過多種方式強制瀏覽器下載檔案而不是直接開啟檔案:
HTMLdownload
屬性
標籤上的此屬性anchor
將嘗試強制您的瀏覽器下載文件,而不是按照通常的方式處理文件。
通常,當您需要自動產生的文件名稱並將其呈現為對使用者有利的內容時,請使用此方法。
用法:<a href="http://www.website.com/path/to/YourDocument.pdf" download="YourDocument.pdf">...
我還沒有找到解決這個問題的方法,但由於你的問題的真正原因如下,我還沒有完全研究它...
HTTP 標頭
Content-Disposition
網路伺服器可以回應帶有標頭的文件請求,Content-Disposition
以描述瀏覽器應如何接收文件。
Content-Disposition: Attachment
會告訴瀏覽器應該下載該文件,而不是像平常那樣處理它。
Content-Disposition: Inline
會告訴瀏覽器它可以顯示在網頁內部,或是作為網頁顯示。
這是一個 Firefox 插件,它將獲取Attachment
標頭並用標頭替換它們Inline
:
https://addons.mozilla.org/en-US/firefox/addon/bypass-forced-download/
從技術上講,它攔截Content-Disposition: attachment
headers 並將它們即時重寫為Content-Disposition: inline
.它還允許您指定應該和不應該使用此重寫的網站。
與大多數插件一樣,您的里程可能會有所不同。
Content-Type
網路伺服器可以回應帶有標頭的文件請求,Content-Type
以描述傳回給瀏覽器的文件類型。
Content-Type: application/octet-stream
被定義為“任意二進位資料”,基本上只能作為檔案下載,否則瀏覽器將不知道如何處理它。
這是當您的瀏覽器要求您嘗試查看的 PDF 文件時您會看到的內容。
Content-Type: application/pdf
如果您想在瀏覽器中查看此文件,或至少讓 Firefox 了解該文件是什麼以及如何正確處理它,您可能需要此文件。
這是一個 Firefox 插件,可以設定為偵聽並Content-Type
根據內容重寫標頭。
https://addons.mozilla.org/en-US/firefox/addon/content-type-fixer/
同樣,這個插件可能適用於所有情況,也可能不適用於所有情況。