0
写音频我试图发送这个文件到输出流,但无法弄清楚为什么它基本吐出一个空的mp3文件。正如你所看到的,我会过早地关闭流的异常,所以我现在已经注释掉了。任何指针赞赏。从音频文件
using (FileStream mp3file = File.OpenRead(newFile))
{
context.Response.AddHeader("content-transfer-encoding", "binary");
context.Response.ContentType = "audio/mpeg";
MemoryStream memStream = new MemoryStream();
byte[] bytes = new byte[mp3file.Length];
memStream.SetLength(mp3file.Length);
mp3file.Read(memStream.GetBuffer(), 0, (int)mp3file.Length);
memStream.Write(bytes, 0, (int)mp3file.Length);
//mp3file.Close();
memStream.WriteTo(context.Response.OutputStream);
//memStream.Close();
}
谢谢。我认为,如果我删除了'memStream.Write(bytes,0,(int)mp3file.Length);'它会工作,但没有任何dics。这是.net 4.作为一个高效的代码和一个noob的.net我有点困惑,试图实现你的建议。这是我尝试过的:'byte [] bytes = new byte [mp3file.Length]; mp3file.Read(bytes,0,(int)mp3file.Length); mp3file.CopyTo(context.Response.OutputStream);'没有喜悦。我真的很想亲自尝试,并感谢您的帮助。 – 2013-04-26 20:11:22
@MrBrimm:那么你已经*读取了所有的数据 - 所以'CopyTo'不会帮助你。为什么麻烦读到'字节'呢? *只需*使用'CopyTo'?此外,如果您遇到问题,并且您对.NET相对较新,则可以停止*尝试进行微优化。先写清楚的代码。当你对你的代码,语言和平台有绝对的信心时*你可以优化,如果你真的必须的话。 – 2013-04-26 20:22:50
这些文件小于10k。我使用(FileStream mp3file = File.OpenRead(newFile))重试了这个文件并再次清空文件context.Response.AddHeader(“content-transfer-encoding”,“binary”); context.Response.ContentType =“audio/mpeg”; mp3file.CopyTo(context.Response.OutputStream); }' – 2013-04-26 20:34:24