C# 从我的ASP.NET网站下载Android 3.0浏览器中的文件

C# 从我的ASP.NET网站下载Android 3.0浏览器中的文件,c#,android,C#,Android,我在Android平板电脑(摩托罗拉Xoom)上的开箱即用浏览器中从我的自定义asp.net网站下载PDF文件时遇到问题 我使用Response.OutputStream.Write发送文件,因为它必须从UNC路径读取文件。这种方法适用于IE、Firefox、Safari和iPad,但不适用于Xoom上的浏览器。然而,当我在Xoom上下载Firefox时,我能够很好地下载该文件 我发现有几个地方建议我使用以下标题: 内容类型:应用程序/八位字节流 内容处置:附件;filename=“MyFile

我在Android平板电脑(摩托罗拉Xoom)上的开箱即用浏览器中从我的自定义asp.net网站下载PDF文件时遇到问题

我使用Response.OutputStream.Write发送文件,因为它必须从UNC路径读取文件。这种方法适用于IE、Firefox、Safari和iPad,但不适用于Xoom上的浏览器。然而,当我在Xoom上下载Firefox时,我能够很好地下载该文件

我发现有几个地方建议我使用以下标题: 内容类型:应用程序/八位字节流 内容处置:附件;filename=“MyFileName.PDF”

我试过了,运气不好。我还尝试使用application/pdf和application/force下载的内容类型,以及文件名大写、扩展名大写、扩展名小写、双引号、单引号、无引号等的每种组合。。。对于内容配置,尚未找到任何有效的方法

我还发现,如果我执行代码下载页面上的文件,它可以下载,但如果我做回发,然后执行代码(单击链接按钮下载文件),它就不起作用


有人能在OOTB Android 3.0浏览器上使用自定义C代码下载文件吗?

我不知道为什么会发生这种情况,但如果你能在
页面加载
块内下载文件,解决方法是链接到一个专用的下载页面,在这里调用
页面加载
块中的下载功能

为了使其更符合网站的其他部分(如果需要),您可以向页面传递不同的参数以下载不同的文件,或者仅当您检测到该网站正在android浏览器上运行时,才重定向到此页面


我将很快添加代码示例。

这是一个老问题,但如果有人遇到此问题:

在设置-->应用程序下检查未知源

确保在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");
}

我也有类似的问题。同样的麻烦。只有通过UNC引用下载文件时,才会出现此问题。将文件序列化为字节[]后,我们将使用Response.BinaryWrite。对于本地文件来说,它工作得很好,但是当我们从文件代理(读取,UNC目录)中获得byteArray时,突然“下载失败”,你能用Android仿真器下载PDF吗?web服务器是否发送gzip的内容?试着禁用它,看看它是否有任何变化。(有时您可能会意外地进行双重编码,或者以稍微不同的格式进行编码,而某些浏览器比其他浏览器处理得更好。)