移动Web应用程序:下载iOS上的附件



在我的移动Web应用程序中,用户中有一个页面可以查看附件。附件可以是任何类型的文件(JPG,PNG,TXT,DOC,ZIP等)。视图附件操作的形式为<a>标签的形式,该标签指向处理请求的ASPX文件。
html:

<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无法下载此文件"。即使支持文件类型,我也希望将其下载而不是默认情况下打开。

我如何实现此行为?

afaik,您不能在iOS上下载文件。

已知的文件(或已注册文件类型的任何应用程序,例如zip)支持的已知文件将打开或显示对话框,让用户选择如何打开文件。

您无法控制Web应用程序/网站的行为。

相关内容

  • 没有找到相关文章

最新更新