我有带有在线播放器的 ASP.NET WebForms 项目。当我点击“播放”时,播放器使用这样的代码询问 mp3 的 web 处理程序:
public void ProcessRequest(HttpContext context)
{
context.Response.Clear();
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.Cache.SetNoStore();
context.Response.Cache.SetExpires(DateTime.MinValue);
context.Response.ContentType = "audio/mpeg";
string songID = context.Request.QueryString["song"];
if (string.IsNullOrEmpty(songID))
return;
Song song = new Song();
song.GetSong(long.Parse(songID));
// Show filename in format "artist - song.mp3"
context.Response.AddHeader("Content-Disposition", "attachment; filename=" + (string.IsNullOrEmpty(song.ArtistName) ? song.Title : (song.ArtistName + " - " + song.Title))); // title for file download
context.Response.WriteFile(song.FileName);
context.Response.End();
}
在那个播放器(我使用JPlayer)开始播放歌曲之后。这个东西适用于所有浏览器,甚至在 android 和 windows 手机上,但它不会在 safari(在 OSX 上!在 windows Safari 上一切正常)和 iPhone 上播放一些歌曲。当我发现处理程序对他们来说有问题时,因为当我尝试设置未通过处理程序播放的 mp3 文件的直接路径时,iphone 播放得很好。只是不知道这里有什么问题..为什么他们播放一些文件而不播放其他文件(mp3 是使用相同的软件编码并且它们具有相同的比特率)?