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

时间:2011-05-05 15:47:14

标签: c# android

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

我正在使用Response.OutputStream.Write来发送文件,因为它必须从UNC路径读取文件。此方法适用于IE,Firefox,Safari和iPad,但不适用于Xoom上的浏览器。但是,当我在Xoom上下载Firefox时,我能够正常下载文件。

我发现了一些建议我使用以下标题的地方: Content-Type:application / octet-stream 内容 - 处理:附件;文件名= “MyFileName.PDF”

我试过这个没有运气。我还尝试使用内容类型的application / pdf和application / force-download以及文件大写,扩展大写,扩展小写,双引号,单引号,无引号等的每个组合......用于Content-Disposition并且还有找到有用的东西。

我还发现如果我执行代码在Page_Load上下载文件就可以下载了,但如果我做回发然后执行代码(点击链接按钮下载文件)它就不会工作

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

2 个答案:

答案 0 :(得分:1)

这是旧的,但万一有人遇到这个问题:

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

确保在IIS服务器上的MIME类型(application / 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");
}

答案 1 :(得分:0)

我不知道为什么会发生这种情况,但是如果您可以在Page_Load块中下载文件,那么解决方法将链接到一个专用页面进行下载,您可以在其中调用下载功能。 Page_Load阻止。

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

我将很快添加代码示例。