2010-12-10 148 views
1

我正在爲按需生成的PDF文件提供給移動設備的用戶。我正在使用ASP.NET MVC 2,並使用Report Viewer本地報告導出爲PDF生成PDF。動態PDF和Android默認瀏覽器

這給了我PDF內容的原始字節[]。

我然後用退回它

回報文件(PDF,mime類型, 「FileName.pdf」);

請注意,我已經嘗試過使用和不使用「FileName.pdf」默認名稱來保存文件。

它適用於桌面瀏覽器和iPhone。我已經用WP 7模擬器進行了測試,看起來好像它可以正常讀取PDF文件(它會提示輸入正確的文件名來保存它)。

然而,Android似乎在抱怨。

我已經在Droid-X和Droid設備上進行了測試,它總是在瀏覽器下載結果中顯示「下載失敗」。在Opera Mini上,它提示保存文件(當使用包含文件名的返回方法時),並且PDF在保存到設備上後打開正常。

我可以通過以下方式返回已經存在於磁盤上的PDF文件:File(「〜/ filename.pdf」,「application/pdf」);所以它似乎只是動態PDF的問題。

有沒有人處理過這個問題?

+0

您是否可以驗證您是否在動態情況下以相同的方式設置了MIME類型?你可以窺探流量或以其他方式轉儲標題進行比較嗎? – 2010-12-10 20:26:25

+0

mime類型被設置爲application/pdf。我發現似乎正在發生的事情是,在資源發生POST後立即發生,Android設備(即使使用SDK中的模擬器執行)也爲同一資源執行立即GET。 HTTP POST成功,但GET得到了404(因爲我只是響應POST)。我不知道它爲什麼要求兩次(每次使用不同的方法)。在啓用HTTP GET之後,它可以正常工作,並且不會執行兩個請求。我還沒有弄清楚雙重要求,但我確實取得了進展。 – 2010-12-10 21:55:45

+0

我有完全相同的問題。 Firefox和Opera Mobile的工作,但不是本地DroidX瀏覽器。順便說一句,動態JPEG圖像工作正常。我正在使用HTTPS,這似乎讓事情變得更糟。我已經能夠通過HTTP加載靜態PDF文件。 MIME類型是正確的。看起來像我在Android論壇上看到的Android用戶的常見問題。 – 2011-02-08 17:23:37

回答

0

我已經在Droid-X和Droid設備上進行了測試,它總是在瀏覽器下載結果中顯示「下載失敗」。

AFAIK,表示HTTP請求失敗,或者MIME類型不是註冊了ACTION_VIEW活動的MIME類型。請記住,DROID沒有附帶PDF查看器,並且我忘記了DROID X是否存在。

我同意克里斯,因爲它覺得問題是無效的MIME類型。考慮使用curl或瀏覽器插件檢查您的HTTP響應標頭,並確認application/pdf確實是作爲MIME類型返回的。

如果這沒有幫助,並且您可以向我們提供一個要測試的URL,那也會有幫助。

+0

URL不能從公共Internet訪問,但正如我在上面的評論中提到的那樣,MIME類型是正確的,但它正在執行POST,然後是GET,並僅顯示GET的響應(它是404 ,所以沒有內容可以顯示)。 – 2010-12-10 21:57:25

0

我從幾年前就看到了這個問題ID,但是如果您只是想顯示PDF,您可以將您的PDF URL嵌入到Google文檔查看器中,然後引用該URL,然後應該在android瀏覽器上打開。

但是,只有在您的URL可公開訪問時才能使用。