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

标签 c# android

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

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

我发现有几个地方建议我使用以下 header : 内容类型:应用程序/八位字节流 Content-Disposition:附件;文件名="我的文件名.PDF"

我已经试过了,但没有成功。我还尝试使用 application/pdf 和 application/force-download 的 Content-Types 以及文件名大写、扩展名大写、扩展名小写、双引号、单引号、无引号等的每种组合......用于 Content-Disposition 并且还没有找到任何有用的东西。

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

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

最佳答案

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

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

确保您在 IIS 服务器上的 MIME 类型 (application/pdf) 中定义了 PDF。

此外,如果您使用的是文件处理程序,则需要设置 header 信息。

此代码块是文件处理程序中使用的示例:

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

关于c# - 从我的 ASP.NET 站点在 Android 3.0 浏览器中下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5900604/

相关文章:

c# - 在 C# 中,为什么匿名方法不能包含 yield 语句?

c# - 如何对 WPF 用户控件的 View 模型进行单元测试

c# - IEnumerable.Count() 可以返回负数吗?

android - 如何将内存中的Android文件权限更改为MODE_PRIVATE?

android - 从 Android 中的对话框调用电话

android - 不需要的 FrameLayout 拉伸(stretch)以包裹所有 child 的高度(而不是只考虑一个 child 的高度)

c# - 如何更改 WinForms 上下文菜单上复选标记或 'more' 箭头的颜色?

c# - 大地址感知 Visual Studio 2015 C#

java - 如何将本地 xml 文件转换为 org.ksoap2.serialization.SoapObject?

android:耳机插头监听器