2011-05-05 89 views
6

我在Android平板電腦(Motorola Xoom)的開箱即用瀏覽器中從我的自定義asp.net網站下載PDF文件時出現問題。從我的ASP.NET網站下載Android 3.0瀏覽器中的文件

我使用Response.OutputStream.Write發送文件,因爲它必須從UNC路徑讀取文件。此方法適用於IE,Firefox,Safari和iPad,但不適用於Xoom上的瀏覽器。但是,當我在Xoom上下載Firefox時,我能夠很好地下載該文件。

我發現了幾個提示我使用下列標題的點: Content-Type:application/octet-stream Content-Disposition:attachment; filename =「MyFileName.PDF」

我試過這個沒有運氣。我還嘗試使用內容類型的應用程序/ pdf和應用程序/強制下載和文件名大寫,擴展名大寫,擴展名小寫,雙引號,單引號,沒有引號,等等的內容處置的每個組合,並已找到有效的東西。

我還發現,如果我執行代碼來下載Page_Load上的文件,它可以下載,但如果我做了回發然後執行代碼(單擊鏈接按鈕下載文件),它不會不工作

有沒有人能夠使用OOTB Android 3.0瀏覽器上的自定義C#代碼下載文件?

+0

我有一個類似的問題。同樣的麻煩。只有在通過UNC參考下載文件時纔會出現此問題。將文件序列化爲byte []後,我們使用Response.BinaryWrite。它適用於本地文件,但是當我們從我們的文件代理(讀取,UNC目錄)中獲取byteArray時,突然出現「下載失敗」 – theo 2011-08-09 17:28:07

+0

您是否可以使用Android模擬器下載PDF? – kaitsu 2011-08-19 02:03:21

+0

Web服務器是否發送gzip內容?嘗試禁用該功能並查看是否進行了任何更改。 (有時候您可能會意外地進行雙重編碼,或者以稍微不同的格式進行編碼,並且某些瀏覽器比其他瀏覽器處理得更好。) – 2011-09-01 17:45:58

回答

0

我不知道爲什麼會發生這種情況,但是如果您可以在Page_Load塊內下載文件,則解決方法將鏈接到專用頁面以下載您在Page_Load塊內調用下載功能的位置。

爲了使這更符合您的網站的其他部分(如果需要),您可能會傳遞不同的參數到頁面以下載不同的文件,或者只有當您檢測到網站正在android瀏覽器上運行時才重定向到此頁面。

我將很快添加代碼示例。

1

這是舊的,但萬一有人遇到這個問題:在設置

檢查未知來源 - >應用程序。

確保在IIS服務器上有MIME類型(應用程序/ pdf)中定義的PDF。

此外,如果您使用的文件處理程序,您將需要設置標題信息。

此代碼塊是什麼將在文件處理程序使用的例子:

string dirpath = System.Configuration.ConfigurationManager.AppSettings["FilePath"]; 
string file = System.Configuration.ConfigurationManager.AppSettings["FileName"]; 

System.IO.FileInfo fi = new System.IO.FileInfo(dirpath + file); 
string contentlen = fi.Length.ToString(); 

context.Response.Buffer = true; 
context.Response.Clear(); 
context.Response.AddHeader("content-disposition", "attachment; filename=" + file); 
context.Response.AddHeader("content-length", contentlen); 
context.Response.ContentType = "application/pdf"; 

try 
{ 
    context.Response.WriteFile(dirpath + file); 
} 
catch (Exception) 
{ 
    context.Response.Redirect("Error.aspx"); 
} 
相關問題