如何用asp.net下载音乐
本文关键字:下载 音乐 net asp 何用 | 更新日期: 2023-09-27 18:16:49
我有一个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();
}
当我运行这段代码并点击按钮时,它下载了音乐。Aspx页面不是mp3文件。我不知道我错在哪里。有人能帮我吗?
最后我解决了我的问题,如下面的代码所示…首先,我在数据库中的音乐表中创建了一个名为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数据库上传和下载文件