如何用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文件。我不知道我错在哪里。有人能帮我吗?

如何用asp.net下载音乐

最后我解决了我的问题,如下面的代码所示…首先,我在数据库中的音乐表中创建了一个名为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数据库上传和下载文件