我有一个asp.net webform应用程序。我想要一个下载音乐的按钮,所以我写下面的代码块:
protected void Button1_Click(object sender, EventArgs e)
{
string id_new;
id_new = Session["selectedmusicID"].ToString();
DataTable dt2 = new DataTable();
dt2 = blm.selectMusic("sel_music", Convert.ToInt32(id_new));
string test = dt2.Rows[0][9].ToString();
Response.ContentType = "application/mp3";
Response.AddHeader("Content-Disposition", dt2.Rows[0][9].ToString());
Response.TransmitFile(Server.MapPath( dt2.Rows[0][9].ToString()));
Response.End();
}
当我运行此代码并单击按钮时,它会下载music.aspx页面而不是mp3文件。我不知道我的错误是什么。 有人可以帮帮我吗?
答案 0 :(得分:0)
最后我解决了我的问题,你可以在下面的代码中看到... 首先,我在数据库中创建了一个名为MusicByte的列到我的音乐表。我通过文件上传存储了每个音乐的数据......
string id_new;
id_new = Session["selectedmusicID"].ToString();
DataTable dt2 = new DataTable();
dt2 = blm.selectMusic("sel_music", Convert.ToInt32(id_new));
string test = dt2.Rows[0][9].ToString();
string filename = test.Substring(9).Replace(" " , "").Replace(".mp3" , ".MP3");
byte[] buffer = (byte[])(dt2.Rows[0][10]);
Response.ContentType = "audio/mpeg";
Response.AddHeader("Content-Disposition", "Attachment;filename=" + filename);
byte[] datablock = new byte[0x1000];
long filesize;
int bytesread;
long totalsbytesread = 0;
using (Stream st = new MemoryStream(buffer))
{
filesize = st.Length;
while (totalsbytesread < filesize)
{
if (Response.IsClientConnected)
{
bytesread = st.Read(datablock, 0, datablock.Length);
Response.OutputStream.Write(datablock, 0, bytesread);
Response.Flush();
totalsbytesread += bytesread;
}
}
}
Response.End();
删除文件名中的空格并将.mp3重新复制到.MP3非常有用。此外,您的视频中的视频帮助我:上传和下载文件到/从SQL Server数据库下载