2016-11-08 2 views
0

У меня есть веб-приложение asp.net. Я хочу, чтобы кнопка для загрузки музыки, так что я напишу ниже блока кода:Как скачать музыку с asp.net

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 file.i не знаю, что это моя ошибка. Кто-нибудь может мне помочь?

+0

@ baty, что вы получаете на 'dt2.Rows [0] [9]' ?? – Webruster

+0

dt2.Rows [0] [9] - это адрес пути сохранения музыки в нем. Например, «../music/musicname.mp3» –

+0

@baty показать формат, как это будет – Webruster

ответ

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(); 

удаление пробелов в имени файла и replice в .mp3 на .MP3 было usefull.Also этого видео в вас трубке помогает мне: Выгрузка и загрузка файлов в/из базы данных SQL Server