powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Тег audio и Handler
1 сообщений из 1, страница 1 из 1
Тег audio и Handler
    #39007209
Программист 3 поколения
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть БД, в ней в binary хранятся wav файлы, нужно их проигрывать на странице.

Если для теста взять файл на диске, то всё прекрасно работает:
Код: c#
1.
2.
3.
4.
5.
context.Response.Clear();
context.Response.AddHeader("content-disposition",
string.Format("attachment; filename=\"{0}\"", file.Name));
context.Response.ContentType = "audio/wav";
context.Response.WriteFile(file.FullName, false);



А вот если сделать всё тоже самое, но взяв файл из базы, то проигрывать отказывается его воспроизводить,
при этом файл в порядке(при обращении к handler - у) успешно скачивается и проигрывается.
Код более сложный с кучей доп. параметров, от которых нет толка, ниже одна из версий:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
context.Response.ClearContent();
context.Response.ClearHeaders();
context.Response.AddHeader("content-disposition", string.Format("attachment; filename=\"{0}\"", context.Request.QueryString["callid"].ToString() + ".wav"));        
context.Response.ContentType = "audio/wav";                    

using (SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["base"].ConnectionString))
{
            cnn.Open();
            SqlCommand cmd = new SqlCommand("SELECT [attachment] FROM table where callid = @callid", cnn);
            cmd.Parameters.AddWithValue("@callid", context.Request.QueryString["callid"].ToString());

            SqlDataReader dr = cmd.ExecuteReader();
            if (dr.Read())
            {
                byte[] byteArray = (byte[])dr["attachment"];

                context.Response.OutputStream.Write(byteArray, 0, byteArray.Length);
                //context.Response.BinaryWrite(byteArray);
                //context.Response.AppendHeader("Content-Length", ((byte[])dr["attachment"]).Length.ToString());                
            }
}
//context.Response.Flush();
//context.Response.End();



Провёл анализ ответа средствами браузера, всё идентично кроме
Request Headers в примере из базы: "Range:bytes=0-", а если из файла то "Range:bytes=0-14451"
т.е. указывается какой-то интервал, что это значит не знаю, возможно именно в этом проблема.
Если кто-то сталкивался, подскажите, что делаю не так.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Тег audio и Handler
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]