2012-10-23 62 views
0

在我的移動Web應用程序中,我有一個頁面,用戶可以查看附件。 附件可以是任何類型的文件(jpg,png,txt,doc,zip等)。 視圖附件操作的形式爲<a>標籤,該標籤指向處理請求的aspx文件。
HTML:移動Web應用程序:在iOS上下載附件

<a class="attachBtn" href="_layouts/ViewFile.aspx?messageAttachmentInstanceId={some id}"></a> 


ViewFile.aspx:

public partial class ViewFile : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      System.IO.BinaryWriter bw = null; 
      System.IO.MemoryStream ms = null; 
      System.IO.StreamReader sr = null; 

      try 
      { 

       string contentType = string.Empty; 
       byte[] content = null; 
       string fileName = string.Empty; 

       if (!string.IsNullOrEmpty(Request.QueryString["messageAttachmentInstanceId"]) && 
        !string.IsNullOrEmpty(Request.QueryString["messageInstanceId"])) 
       { 

        int messageInstanceId = Int32.Parse(Request.QueryString["messageInstanceId"]); 
        Guid attachmentInstanceId; 
        GuidUtil.TryParse(Request.QueryString["messageAttachmentInstanceId"], out attachmentInstanceId); 

        MessageInstance messageInstance = WorkflowEngineHttpModule.Engine.GetService<IMessagingService>() 
         .GetMessageInstance(messageInstanceId); 

        if (messageInstance != null) 
        { 
         MessageAttachmentInstance attachmentInstnace = messageInstance.Attachments[attachmentInstanceId]; 
         contentType = attachmentInstnace.ContentType; 
         fileName = attachmentInstnace.FileName; 
         content = attachmentInstnace.Content; 
        } 
       } 
       this.Response.ContentType = contentType; 
       string headerValue = string.Format("attachment;filename={0}", 
        this.Server.UrlPathEncode(fileName)); 
       Response.AddHeader("content-disposition", headerValue); 
       bw = new System.IO.BinaryWriter(this.Response.OutputStream); 
       bw.Write(content); 
      } 

      catch (Exception ex) 
      { 
       LogError("ViewFile.aspx, " 
       + ex.InnerException, ex); 

      } 
      finally 
      { 
       if (sr != null) 
        sr.Close(); 

       if (ms != null) 
        ms.Close(); 

       if (bw != null) 
        bw.Close(); 
      } 
     } 
    } 


問題:
在Android設備中,當用戶點擊附件時,文件被自動下載,這是理想的行爲,因爲用戶可以使用任何他想要的工具打開文件,即使文件類型不受支持,用戶以後可以下載一個工具打開它。

但在iOS設備中文件沒有下載,而是重定向到ViewFile.aspx,並嘗試在瀏覽器中打開文件,如果文件類型不受支持,則顯示警告:「safari無法下載此文件」。 即使支持文件類型,我希望它被下載並且默認情況下不會打開。

我該如何實現這種行爲?

回答

1

AFAIK,你不能在iOS上下載文件。

Safari(或任何已註冊文件類型的應用程序,例如ZIP)支持的已知文件將打開或顯示一個對話框,讓用戶選擇如何打開文件。

您無法控制您的網站應用/網站的行爲。

+0

我想我可以住在讓用戶選擇如何打開文件的對話框中。 但沒有對話框... –

+0

不,只有在支持文件時纔會出現對話框。看看這個:https://discussions.apple.com/thread/2798115?start=0&tstart=0 – MartinHN

相關問題