powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC - Браузеры не показывают расширение файлов .chm при загрузке
15 сообщений из 15, страница 1 из 1
MVC - Браузеры не показывают расширение файлов .chm при загрузке
    #37826294
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возвращаю файл обычным методом (пробовал два варианта):

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public FileResult DownloadContent(...)
{
    return File(fileContent, "application/x-chm", "fileName");
}

public FileResult DownloadContent(...)
{
    return File(fileContent, "application/x-chm", "fileName.chm");
}



Но в любом случае браузер пишет, что мол не знаю такого приложения и расширение не показывает. Пробовал в Опере и ИЕ. Лишь когда в Опере указал в настройках (Tools - Preferences - Downloads - Add - File Type), что такой тип файлов существует, так она стала добавлять и расширения, и программу сразу узнала, что такая существует (HTML Help называется).

Как сделать так, чтобы браузеры сразу понимали, что я им такой файл посылаю? Я же им и MIME-тип, и даже расширение руками приписал к имени файла (во втором случае). Разве этого недостаточно, чтобы просто приписать расширение к имени файла и не заставлять пользователя гадать, что это я ему за фигню подсовываю, о которой даже браузер не знает. Ведь не заставишь же каждого пользователя в своём браузере добавить настройки для закачек этого типа файлов, а по умолчанию этих настроек в браузерах почему-то нет.
...
Рейтинг: 0 / 0
MVC - Браузеры не показывают расширение файлов .chm при загрузке
    #37826322
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Response.AppendHeader("content-disposition", "attachment; filename=" + Server.HtmlEncode(myFilename));
...
Рейтинг: 0 / 0
MVC - Браузеры не показывают расширение файлов .chm при загрузке
    #37826611
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanSYS, это мвц :)
...
Рейтинг: 0 / 0
MVC - Браузеры не показывают расширение файлов .chm при загрузке
    #37826631
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУSanSYS, это мвц :)
Да, МВЦ. А что, там по-другому? Вроде, знакомые штучки - респонс там, ХТМЛэнкоде всякие - завтра попробую.

А как в МВЦ тогда правильно это сделать?
...
Рейтинг: 0 / 0
MVC - Браузеры не показывают расширение файлов .chm при загрузке
    #37826641
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУSanSYS, это мвц :)
Эх, точно!
...
Рейтинг: 0 / 0
MVC - Браузеры не показывают расширение файлов .chm при загрузке
    #37826660
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320МСУSanSYS, это мвц :)
Да, МВЦ. А что, там по-другому? Вроде, знакомые штучки - респонс там, ХТМЛэнкоде всякие - завтра попробую.

А как в МВЦ тогда правильно это сделать?
Хм.. попробуй тип указать application/octet-stream ну или MediaTypeNames.Application.Octet
...
Рейтинг: 0 / 0
MVC - Браузеры не показывают расширение файлов .chm при загрузке
    #37826663
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Да, МВЦ. А что, там по-другому? Вроде, знакомые штучки - респонс там, ХТМЛэнкоде всякие - завтра попробую.
А как в МВЦ тогда правильно это сделать?
ControllerContext.HttpContext

Код: c#
1.
2.
3.
4.
5.
6.
7.
public class ... : ActionResult     
{          
    public override void ExecuteResult(ControllerContext context)         
    {
        ...
    }
} 
...
Рейтинг: 0 / 0
MVC - Браузеры не показывают расширение файлов .chm при загрузке
    #37829819
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не очень понял код, который вы мне предлагаете, но я так понял, что надо поработать с заголовками ХТТП.

Вобщем, проблема частично решилась - это я по невнимательности не туда посмотрел и не тот код запустил. Короче говоря, если указать расширение файла в его имени, как во втором варианте у меня в первом посте, то все нормальные браузеры всё понимают и правильно определяют тип файлов... Но есть такая вещь, как ИЕ 8 - ему не только не хватает расширения в имени, но даже если указать перед отправкой файла заголовок с инфой о типе отправляемых данных в ответе, он всё равно ничего не понимает:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
[HttpGet]
public FileResult DownloadContent(..., Guid? entityId, ...)
{           
	...// fileToDownload initialization
	
	HttpContext.Response.AddHeader("Content-Type", application/x-chm);

	return File(fileToDownload.Content, fileToDownload.MIME, fileToDownload.NameWithExtension);
}



ИЕ 8 пишет при попытке загрузки, что "Тип: неизвестный тип файла", а имя почему-то совпадает с параметром entityId действия DownloadContent. Я не могу понять логику ИЕ - а почему id, почему не какой-нибудь другой параметр (там их три, причём два оставшихся - стринговые)?

Далее, при попытке сохранить на диске, когда выбирается, в какой каталог сохранить, он в имени файла пишет этот айдишник без расширения (нормальные браузеры пишут имя файла с расширением - fileToDownload.NameWithExtension), а в типе файла - "Все типы файлов", как будто я ему MIME не посылаю.

Что ещё нужно указать ИЕ, чтобы он понял, что это chm?
...
Рейтинг: 0 / 0
MVC - Браузеры не показывают расширение файлов .chm при загрузке
    #37829824
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-- HttpContext.Response.AddHeader("Content-Type", application/x-chm);
На самом деле
Код: c#
1.
HttpContext.Response.AddHeader("Content-Type", "application/x-chm");
...
Рейтинг: 0 / 0
MVC - Браузеры не показывают расширение файлов .chm при загрузке
    #37829832
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, кстати, я в дебаге глянул - если не указать явно заголовок с типом контента, то параметр Response.ContentType будет "text/html", что, однако, не мешает нормальным браузерам распознать файл при загрузке. А вот почему FileResult в MVC при возврате не устанавливает заголовки? Или это что-то типа устаревших формальностей и для нормальных браузеров не нужно?
...
Рейтинг: 0 / 0
MVC - Браузеры не показывают расширение файлов .chm при загрузке
    #37830036
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Я не очень понял код, который вы мне предлагаете, но я так понял, что надо поработать с заголовками ХТТП...
МСУ, должно быть, имел ввиду то, что необходимо использовать контекст предоставленный контроллером, подозреваю что это просто this.Context
...
Рейтинг: 0 / 0
MVC - Браузеры не показывают расширение файлов .chm при загрузке
    #37830233
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, имелось ввиду юзать из контекста. Или свой ActionResult / FileResult сделать под конкретный экшен.
...
Рейтинг: 0 / 0
MVC - Браузеры не показывают расширение файлов .chm при загрузке
    #37830544
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanSYSМСУ, должно быть, имел ввиду то, что необходимо использовать контекст предоставленный контроллером, подозреваю что это просто this.Context
МСУДа, имелось ввиду юзать из контекста. Или свой ActionResult / FileResult сделать под конкретный экшен.
Ну я его и использую. А дальше-то как? Там выше человек написал что-то, связанное с заголовками, как я понял. В свойствах контекста есть функция добавления заголовков (я написал), но как и что написать, чтобы ИЕ понял, что это у меня за файл, я не знаю. Я самый очевидный заголовок добавил - ИЕ не понял. Опера и Фаер Фокс понимают всё и без заголовков, а Фаер Форкс - даже без регистрации в нём такого типа файлов расширения и MIME'а.

Я хочу, чтобы ИЕ понимал этот файл без дополнительной работы по его настройке - юзер же не будет настраивать свой браузер, чтобы понять, что за фигню он у меня пытается загрузить.
...
Рейтинг: 0 / 0
MVC - Браузеры не показывают расширение файлов .chm при загрузке
    #37830599
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, понял:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
[HttpGet]
public FileResult DownloadContent(...)
{
	FileToDownloadModel fileToDownload = ...;

	HttpContext.Response.AppendHeader(
		"content-disposition",
		"attachment; filename=" + HttpUtility.UrlPathEncode(fileToDownload.Name));

	return File(fileToDownload.Content, fileToDownload.MIME, fileToDownload.Name);
}
...
Рейтинг: 0 / 0
MVC - Браузеры не показывают расширение файлов .chm при загрузке
    #37830710
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320, RTFM. Уже всё сказано.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC - Браузеры не показывают расширение файлов .chm при загрузке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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