我在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#代码下载文件?
答案 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>
我将很快添加代码示例。