我正在开发一个网站,用户可以从网站下载附件。下载功能在所有桌面浏览器中都能正常工作,但在android浏览器中下载失败。文件下载为“.htm”扩展名。你可以在下面找到下载脚本(c#):
protected void lnkButton_Click(object sender, EventArgs e) {
try {
LinkButton lnkButton = (LinkButton)sender;
System.IO.FileInfo currentFIleInfo = new System.IO.FileInfo(lnkButton.CommandArgument);
if(currentFIleInfo.Exists) {
Response.Clear();
Response.AddHeader("Pragma", "no-cache");
Response.AddHeader("Cache-Control", "no-cache");
Response.AddHeader("Content-Disposition", "attachment; filename=""" + lnkButton.Text.ToUpper() + """" );
Response.AddHeader("Content-Length", currentFIleInfo.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.TransferFile(currentFIleInfo.FullName);
Response.End();
}
} catch(Exception ex) {
MMHLogger.Error(ex);
}
}
我的aspx页面看起来像这样
<table border="0" cellpadding="0" cellspacing="3px">
<tr>
<td>
<a href='<%# Eval("FileName", "../SiteContent/Uploads/{0}") %>' target="_blank">
<asp:Image ID="Image1" ToolTip='<%# Eval("AlternativeText")%>' AlternateText='<%# Eval("AlternativeText")%>' ImageUrl='<%# Eval("FileName", "ImageThumbnailer.ashx?img=SiteContent/Uploads/{0}&size=72") %>' runat="server" BorderWidth="0" />
</a>
</td>
<td>
<%# Eval("ImageName")%>
<br />
<%# Eval("ImageSize")%>
</td>
<td>
<a href='<%# Eval("FileName", "../SiteContent/Uploads/{0}") %>' target="_blank">View</a>
</td>
</tr>
</table>
我尝试了此博客中列出的所有建议:http://www.digiblog.de/2011/04/android-and-the-download-file-headers/
但仍然在Android浏览器中以.htm扩展名下载文件。
答案 0 :(得分:0)
99%的错误是你错过了MIME类型中的“ - ”。 正确的是:
application/octet-stream
所以基本上是android它没有检测到正确的类型。