这段时间在研究a href 下载MP3的时候,比如谷歌浏览器会自动播放,后来查资料得知需要在iis中修改mime类型为:.mp3对应的mime类型为Audio/mpeg,修改后发现可以下载,但是后来又遇到了有些电脑装有apple的quicktime软件,点击下载的时候还是会自动播放,这个问题困扰了我好久,一直没有解决。
后来查询asp.net下载二进制文件,发现可以解决这个问题,后来结合html+ashx解决了这个问题,下面贴上代码:
string fname = context.Request["fname"].ToString();
context.Response.ContentType = "Audio/mpeg";
HttpBrowserCapabilities bc = context.Request.Browser;
if (bc.Browser == "IE")
{
context.Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fname));
}
else
{
context.Response.AddHeader("Content-Disposition", "attachment;filename=" + fname);
}
string filename = "../FileInfo/" + fname;
context.Response.TransmitFile(filename);
调用方法:
<a href='Handler/xiaz.ashx?fname=xxx.MP3'>下载</a>
这里之所以要判断浏览器类型,是由于有些浏览器版本问题,文件名称为中文的时候会显示乱码,所以需要HttpUtility.UrlEncode进行编码,这样每次访问这个接口即可返回一下MP3文件,不会自动播放了!