Перейти к содержимому

Почему файлы открываются через браузер

  • автор:

Почему после деплоя файл по ссылке стал открываться в браузере вместо скачивания?

Которые после деплоя на сервер становятся соответственно:

  1. https://bearings-info.herokuapp.com/file/dictionary_ru/download
  2. https://bearings-info.herokuapp.com/file/comments/download
  3. https://bearings-info.herokuapp.com/file/info_categoкies/download

На локалхосте все ссылки работают как требуется — файл скачивается.

В задеплоеном проекте — то же самое. За исключением 1 ссылки:

По ней после деплоя файл почему-то стал открываеться в браузере.

Почему на локалхосте скачивает, а на сервере открывает? Почему другие ссылки не ведут себя аналогичным образом? В чем разница?

Проект:

  • localhost (все Ок — скачивается): Vue.js (фронт) + Spring Boot (бэк) + Nginx (обратный прокси)
  • деплой (открывается вместо скачивания): фронт на GH Pages, бэк на Heroku, Nginx не используется

Код:

getDictionaryDownloadUrl() < let lang = this.$route.params.lang; return this.basicUrl + "/file/" + "dictionary" + "_" + lang + "/download"; >, getDownloadUrl(fileName) < return this.basicUrl + "/file/" + fileName + "/download"; >

Можно посмотреть «вживую»:

old-vehicles.com/#/menu/ru -> «Скачать словарь»

И обнаружил еще одну особенность поведения: попробуйте переключить язык на польский и повторить «Download dictionary». Обратите внимание, что в этом случае словарь скачается.

Единственная разница межу всеми этими кейсами,которая мне приходит в голову, это то, что в файле dictionary_ru присутствует кириллица.

Почему файл открывается в браузере как текст, а не скачивается?

Пишу тут одну фигню, необходимо из этой фигни выгружать не фиговые такие отчеты в *.xlsx. Сгенерировал файлик, передал JS’у на него ссылку, пишу:

window.location.href = result['url']; 

Т.е. пытаюсь «скачать» его. А он открывается тупо как текст. Я думал проблема в content-type’e, добавил следующее:

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 

Все равно как текст открывается.

П.С. Я знаю, что без JS’а с ajax’ом все сделать проще, но необходимо передавать кучу информации, по этому, приходится юзать JS.

Перемещено true_admin из development

Deleted
30.09.15 14:02:27 MSK

гуглить за тебя папа карло будет?

reprimand ★★★★★
( 30.09.15 14:23:45 MSK )
Ответ на: комментарий от reprimand 30.09.15 14:23:45 MSK

Добавил вот это: Content-Disposition: attachment; filename=«fname.ext»

Deleted
( 30.09.15 14:33:14 MSK )
Ответ на: комментарий от Deleted 30.09.15 14:33:14 MSK

посмотри что за хедеры отправляет сервер, делов-то
Не девелопер что-ли?)

reprimand ★★★★★
( 30.09.15 14:36:32 MSK )
Ответ на: комментарий от reprimand 30.09.15 14:36:32 MSK

$ nc hostname 80 GET /addr

reprimand ★★★★★
( 30.09.15 14:38:15 MSK )
Ответ на: комментарий от reprimand 30.09.15 14:36:32 MSK

посмотри что за хедеры отправляет сервер, делов-то

Странно, там нет ни одного моего параметра, как будто я их и не указывал вовсе.

Да какой из меня девелопер. Стажер-юниор максимум.

Deleted
( 30.09.15 14:40:42 MSK )
Ответ на: комментарий от reprimand 30.09.15 14:36:32 MSK

Вообще нет, один параметр есть, а «Content-Disposition: attachment;» — нет. Ни фига не пойму:

POST /saveToExcelTabelByCategorie.xlsx HTTP/1.1 Host: tabgraf Accept: application/json, text/javascript, */*; q=0.01 Accept-Encoding: gzip, deflate Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Cookie: PHPSESSID=vi082ee84f8hpfccmasr4768j2 Origin: http://tabgraf Referer: http://tabgraf/ User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36 X-DevTools-Emulate-Network-Conditions-Client-Id: 32D3F12F-A4AB-4EF5-9810-FFDE5BC2B29E X-Requested-With: XMLHttpRequest HTTP/1.1 200 OK Accept-Ranges: bytes Content-Length: 10100 Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,text/html; charset=utf-8 Date: Wed, 30 Sep 2015 10:47:21 GMT ETag: W/"c48a29626dfbd01:0" Last-Modified: Wed, 30 Sep 2015 10:47:21 GMT Server: Microsoft-IIS/7.5 X-Powered-By: ASP.NET 

Меня пугает вот это: «Accept: application/json, text/javascript, */*; q=0.01»

Deleted
( 30.09.15 14:46:19 MSK )
Последнее исправление: Bizun 30.09.15 14:46:55 MSK (всего исправлений: 1)

Ответ на: комментарий от Deleted 30.09.15 14:46:19 MSK

Меня пугает вот это: «Accept: application/json, text/javascript, */*; q=0.01»

А Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,text/html не пугает? А POST и X-Requested-With: XMLHttpRequest, когда ты делаешь просто

goingUp ★★★★★
( 30.09.15 15:04:49 MSK )
Последнее исправление: goingUp 30.09.15 15:11:08 MSK (всего исправлений: 1)

Отключаем открытие PDF файлов внутри браузера

Отключаем открытие PDF файлов внутри браузера

Большинство современных браузеров имеют встроенный просмотрщик PDF файлов, с помощью которого они позволяют просматривать любой PDF файл, который вы открываете на веб-странице, или скачиваете с какого-нибудь веб-сайта. Если такое поведение браузера вас не устраивает, и вы хотите открывать PDF файлы с помощью другой программы на компьютере, то для этого нужно будет выполнить не сложную настройку браузера по инструкциям ниже.

Google Chrome

  1. Открываем меню браузера, и выбираем пункт «Настройки«.
  2. Открываем раздел настроек «Конфиденциальность и безопасность«.
  3. Открываем раздел «Настройки сайтов«.
  4. Находим пункт «PDF файлы«. Если он отсутствует — нажимаем на надпись «Дополнительные настройки контента«, чтобы увидеть полный список, в котором должен быть необходимый нам пункт настроек.
  5. В открывшихся настройках PDF-файлов, выбираем параметр «Скачивать PDF-файлы«.

Microsoft Edge

  1. Открываем меню браузера, и там выбираем пункт «Настройки«.
  2. В левом боковом меню быстрых переходов, выбираем пункт «Файлы cookie и разрешения сайтов«.
  3. В списке разрешений следует найти пункт «PDF-документы«, и открыть его.
  4. Включаем опцию «Всегда скачивать файлы PDF«.

Mozilla Firefox

  1. Открываем меню браузера, и выбираем пункт «Настройки«.
  2. Прокручиваем содержимое окна настроек, до тех пор, пока не будет найдена секция «Файлы и приложения«. Там же будет находится раздел «Приложения«, где в списке следует найти «Формат переносимых документов (PDF)«.
  3. В соседней колонке «Действие«, нужно открыть выпадающее меню и выбрать «Использовать приложение Windows. «.

Яндекс Браузер

  1. Открываем настройки браузера, вызвав главное меню, и выбрав в нем пункт «Настройки«.
  2. В левой панели быстрого перехода выбираем «Инструменты«.
  3. Здесь следует найти раздел «Просмотр файлов«, и в нем отключить опцию «Открывать в браузере PDF-файлы«.
Была ли эта статья Вам полезна?

Что в статье не так? Пожалуйста, помогите нам её улучшить!

.EXE файлы открываются в браузере

Не могу открыть exe файл. Он по умолчанию открывается в браузере. Как мне это исправить?

Голосование за лучший ответ

Подобная проблема была, я просто скачанные файлы добавлял в архив, они как-то запускались.

нарушена ассоциация файлов exe.
Восстановление ассоциации файлов в Windows 7 и 8 http://remontka.pro/fix-file-associations-windows/

правой кнопкой открыть с помощью

В большинстве случаев проблема бывает вызывана сбоем в ассоциациях файлов Windows.
Чтобы решить проблему, необходимо внести изменения в системный реестр Windows.
Для этого необходимо загрузить и запустить на выполнение два файла реестра:
восстановление ассоциаций ярлыков
pcbee.ru/files/Default_LNK.zip
восстановление ассоциаций исполняемых файлов (файлов .exe)
pcbee.ru/files/Default_EXE.zip

Похожие вопросы

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *