我有一个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文件,我不知道我的错误是什么。有人能帮我吗?
发布于 2016-11-11 14:11:11
我终于解决了我的问题,正如你在下面的代码中所看到的.首先,我在数据库中创建了一个名为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 usefull.Also这段视频帮助我:将文件上载或下载到Server数据库
https://stackoverflow.com/questions/40480413
复制相似问题