私はasp.net webformアプリケーション(音楽ウェブサイト)を持っています。 ダウンロードボタンがあります。だからユーザーがそれをクリックしたとき。選択した音楽がブラウザでダウンロードされ始めます。どうすればいいですか?場合どのようにasp.net C#で音楽(mp3)をダウンロードするためのコードを生成するには?
int id = int.Parse(context.Request.QueryString["id"]);
byte[] bytes;
string contentType;
string strConnString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
string name;
using (SqlConnection con = new SqlConnection(strConnString))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = "select Name, Data, ContentType from tblFiles where [email protected]";
cmd.Parameters.AddWithValue("@Id", id);
cmd.Connection = con;
con.Open();
SqlDataReader sdr = cmd.ExecuteReader();
sdr.Read();
bytes = (byte[])sdr["Data"];
contentType = sdr["ContentType"].ToString();
name = sdr["Name"].ToString();
con.Close();
}
}
context.Response.Clear();
context.Response.Buffer = true;
context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + name);
context.Response.ContentType = contentType;
context.Response.BinaryWrite(bytes);
context.Response.End();
:
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 test2 = test.Substring(9);
Context.Response.Clear();
Context.Response.Buffer = true;
Context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + test2);
Context.Response.ContentType = "audio/mp3";
Context.Response.TransmitFile(@"~\music\" + test2);
Context.Response.End();
何かしようとしましたか? –
はい私はそのコードを書いていますが、.file3ではない.file3形式で保存された音楽は 私のコードを書く –
あなたがやっているtest2の部分文字列はファイル名から.mp3を切り取っています。もしそうなら、それはあなたの問題です。コンテンツ処理のファイル名部分に渡される値は、ブラウザに表示される値です。拡張子がない場合は.fileとしてダウンロードされます。 – ThatChris