|
|
|
MVC - Браузеры не показывают расширение файлов .chm при загрузке
|
|||
|---|---|---|---|
|
#18+
Возвращаю файл обычным методом (пробовал два варианта): Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. Но в любом случае браузер пишет, что мол не знаю такого приложения и расширение не показывает. Пробовал в Опере и ИЕ. Лишь когда в Опере указал в настройках (Tools - Preferences - Downloads - Add - File Type), что такой тип файлов существует, так она стала добавлять и расширения, и программу сразу узнала, что такая существует (HTML Help называется). Как сделать так, чтобы браузеры сразу понимали, что я им такой файл посылаю? Я же им и MIME-тип, и даже расширение руками приписал к имени файла (во втором случае). Разве этого недостаточно, чтобы просто приписать расширение к имени файла и не заставлять пользователя гадать, что это я ему за фигню подсовываю, о которой даже браузер не знает. Ведь не заставишь же каждого пользователя в своём браузере добавить настройки для закачек этого типа файлов, а по умолчанию этих настроек в браузерах почему-то нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2012, 16:28 |
|
||
|
MVC - Браузеры не показывают расширение файлов .chm при загрузке
|
|||
|---|---|---|---|
|
#18+
Response.AppendHeader("content-disposition", "attachment; filename=" + Server.HtmlEncode(myFilename)); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2012, 16:41 |
|
||
|
MVC - Браузеры не показывают расширение файлов .chm при загрузке
|
|||
|---|---|---|---|
|
#18+
SanSYS, это мвц :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2012, 19:59 |
|
||
|
MVC - Браузеры не показывают расширение файлов .chm при загрузке
|
|||
|---|---|---|---|
|
#18+
МСУSanSYS, это мвц :) Да, МВЦ. А что, там по-другому? Вроде, знакомые штучки - респонс там, ХТМЛэнкоде всякие - завтра попробую. А как в МВЦ тогда правильно это сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2012, 20:25 |
|
||
|
MVC - Браузеры не показывают расширение файлов .chm при загрузке
|
|||
|---|---|---|---|
|
#18+
МСУSanSYS, это мвц :) Эх, точно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2012, 20:35 |
|
||
|
MVC - Браузеры не показывают расширение файлов .chm при загрузке
|
|||
|---|---|---|---|
|
#18+
user7320МСУSanSYS, это мвц :) Да, МВЦ. А что, там по-другому? Вроде, знакомые штучки - респонс там, ХТМЛэнкоде всякие - завтра попробую. А как в МВЦ тогда правильно это сделать? Хм.. попробуй тип указать application/octet-stream ну или MediaTypeNames.Application.Octet ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2012, 20:52 |
|
||
|
MVC - Браузеры не показывают расширение файлов .chm при загрузке
|
|||
|---|---|---|---|
|
#18+
user7320Да, МВЦ. А что, там по-другому? Вроде, знакомые штучки - респонс там, ХТМЛэнкоде всякие - завтра попробую. А как в МВЦ тогда правильно это сделать? ControllerContext.HttpContext Код: c# 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2012, 20:54 |
|
||
|
MVC - Браузеры не показывают расширение файлов .chm при загрузке
|
|||
|---|---|---|---|
|
#18+
Я не очень понял код, который вы мне предлагаете, но я так понял, что надо поработать с заголовками ХТТП. Вобщем, проблема частично решилась - это я по невнимательности не туда посмотрел и не тот код запустил. Короче говоря, если указать расширение файла в его имени, как во втором варианте у меня в первом посте, то все нормальные браузеры всё понимают и правильно определяют тип файлов... Но есть такая вещь, как ИЕ 8 - ему не только не хватает расширения в имени, но даже если указать перед отправкой файла заголовок с инфой о типе отправляемых данных в ответе, он всё равно ничего не понимает: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. ИЕ 8 пишет при попытке загрузки, что "Тип: неизвестный тип файла", а имя почему-то совпадает с параметром entityId действия DownloadContent. Я не могу понять логику ИЕ - а почему id, почему не какой-нибудь другой параметр (там их три, причём два оставшихся - стринговые)? Далее, при попытке сохранить на диске, когда выбирается, в какой каталог сохранить, он в имени файла пишет этот айдишник без расширения (нормальные браузеры пишут имя файла с расширением - fileToDownload.NameWithExtension), а в типе файла - "Все типы файлов", как будто я ему MIME не посылаю. Что ещё нужно указать ИЕ, чтобы он понял, что это chm? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2012, 16:35 |
|
||
|
MVC - Браузеры не показывают расширение файлов .chm при загрузке
|
|||
|---|---|---|---|
|
#18+
-- HttpContext.Response.AddHeader("Content-Type", application/x-chm); На самом деле Код: c# 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2012, 16:36 |
|
||
|
MVC - Браузеры не показывают расширение файлов .chm при загрузке
|
|||
|---|---|---|---|
|
#18+
Да, кстати, я в дебаге глянул - если не указать явно заголовок с типом контента, то параметр Response.ContentType будет "text/html", что, однако, не мешает нормальным браузерам распознать файл при загрузке. А вот почему FileResult в MVC при возврате не устанавливает заголовки? Или это что-то типа устаревших формальностей и для нормальных браузеров не нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2012, 16:40 |
|
||
|
MVC - Браузеры не показывают расширение файлов .chm при загрузке
|
|||
|---|---|---|---|
|
#18+
user7320Я не очень понял код, который вы мне предлагаете, но я так понял, что надо поработать с заголовками ХТТП... МСУ, должно быть, имел ввиду то, что необходимо использовать контекст предоставленный контроллером, подозреваю что это просто this.Context ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2012, 18:10 |
|
||
|
MVC - Браузеры не показывают расширение файлов .chm при загрузке
|
|||
|---|---|---|---|
|
#18+
Да, имелось ввиду юзать из контекста. Или свой ActionResult / FileResult сделать под конкретный экшен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2012, 21:35 |
|
||
|
MVC - Браузеры не показывают расширение файлов .chm при загрузке
|
|||
|---|---|---|---|
|
#18+
SanSYSМСУ, должно быть, имел ввиду то, что необходимо использовать контекст предоставленный контроллером, подозреваю что это просто this.Context МСУДа, имелось ввиду юзать из контекста. Или свой ActionResult / FileResult сделать под конкретный экшен. Ну я его и использую. А дальше-то как? Там выше человек написал что-то, связанное с заголовками, как я понял. В свойствах контекста есть функция добавления заголовков (я написал), но как и что написать, чтобы ИЕ понял, что это у меня за файл, я не знаю. Я самый очевидный заголовок добавил - ИЕ не понял. Опера и Фаер Фокс понимают всё и без заголовков, а Фаер Форкс - даже без регистрации в нём такого типа файлов расширения и MIME'а. Я хочу, чтобы ИЕ понимал этот файл без дополнительной работы по его настройке - юзер же не будет настраивать свой браузер, чтобы понять, что за фигню он у меня пытается загрузить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2012, 10:08 |
|
||
|
MVC - Браузеры не показывают расширение файлов .chm при загрузке
|
|||
|---|---|---|---|
|
#18+
А, понял: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2012, 10:29 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=37829824&tid=1359513]: |
0ms |
get settings: |
6ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 510ms |

| 0 / 0 |
