Здравствуйте, Duke_Nuken, Вы писали:
D_N>Как тут быть?
Взять компонент
MimeDetector, в обработчике (System.Web.IHttHandler) выдавать поток бинарного файла пачками, к примеру, по 100 байт так:
context.Response.BinaryWrite(bytes);
По первым 100 байтам (на самом деле хватит и меньше; то есть как у вас написано — не делайте, возможны тормоза) определить Content-Type примерно таким кодом:
private static string GetContentType(byte[] bytes) {
MimeTypes types = (MimeTypes) HttpRuntime.Cache["mimeTypes"];
if (types == null) {
types = new MimeTypes();
HttpRuntime.Cache["mimeTypes"] = types;
}
sbyte[] data = SupportUtil.ToSByteArray(bytes);
MimeType type = types.GetMimeType(data);
if (type != null)
return type.Name;
return string.Empty;
}
Стоит это хозяйство кэшировать, иначе при каждом определении MimeDetector будет заново зачитывать свой конфигурационный файл (в нем хранится соответствие Content-Type и заголовка, можно свои типы добавлять, в принципе).
PS Прикрутил MimeDetector к своему BinaryHandler-у минут за 30 — работает отлично, жалоб не имею.