Файл открывается вместо загрузки в Internet Explorer в href-ссылке

<a href="path/to/file/filename.xxx" download="filename.xxx">filename</a>'

Когда я нажимаю ссылку, загрузите файл filename.xxx.

Он отлично работает в хроме. Но в Internet Explorer он открывает файл вместо загрузки. В чем может быть проблема? Есть ли какие-либо свойства, которые нужно добавить, чтобы заставить его работать, например.

А также мне нужен образец загрузки файла, который работает для всех браузеров.

Ответ 1

Атрибут скачать не поддерживается в IE (см. http://caniuse.com/#search=download%20attribute).

Это говорит о том, что атрибут загрузки поддерживается только firefox, chrome, opera и последней версией браузера Blackberry.

Для других браузеров вам необходимо использовать более традиционные методы для принудительной загрузки. Это код на стороне сервера необходим для установки соответствующего заголовка Content-Type и Content-Disposition, чтобы сообщить (или обмануть в зависимости от вашей точки зрения) браузер для загрузки элемента. Заголовки должны выглядеть следующим образом:

Content-Type: application/octet-stream
Content-Disposition: attachment;filename=\"filename.xxx\"

(спасибо antyrat для копирования и вставки заголовков)

Ответ 2

Он должен быть исправлен на стороне сервера. Сервер должен вернуть эти заголовки для следующих типов файлов:

Content-Type: application/octet-stream
Content-Disposition: attachment;filename=\"filename.xxx\"

Ответ 3

Замените файл (.zip) и IE предоставит пользователю возможность открыть или загрузить файл.

Ответ 5

Это должно быть вопросом заголовков http.

см. здесь: Заголовки HTTP для загрузки файлов

Сервер должен указать вашему браузеру загрузить файл, отправив

Content-Type: application/octet-stream; 
Content-Disposition: attachment;

в заголовках

Ответ 6

Это не проблема с кодом. Это настройки IE по умолчанию.

Чтобы изменить настройку "всегда открывать":

  • В проводнике Windows нажмите "Инструменты", выберите "Параметры папки"
  • В появившемся окне щелкните вкладку "Типы файлов" и прокрутите список до тех пор, пока не найдете расширение файла, которое вы хотите изменить (они находятся в алфавитном порядке). Например, если Internet Explorer всегда пытается открыть .zip файлы, прокрутите список до тех пор, пока не найдете запись для "zip".
  • Нажмите на тип файла, затем кнопку "Дополнительно".
  • Установите флажок "Подтвердить после загрузки", затем нажмите "ОК" > "Закрыть".

EDIT: Если вы спросите меня, вместо внесения каких-либо изменений в код я добавлю следующий текст " Пользователи Internet Explorer: Чтобы загрузить файл, Rightclick" и нажмите " Сохранить цель как", чтобы загрузить файл.

РЕДАКТИРОВАТЬ 2: ЭТО решение будет отлично работать для вас. Это решение, которое я только что скопировал из другого ответа. Я не пытаюсь передать это как свой собственный

Content-Type: application/octet-stream
Content-Disposition: attachment;filename=\"filename.xxx\"

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

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

Ответ 7

Известна проблема HTTP-заголовков с Internet Explorer. Попробуйте отредактировать файл .htaccess сервера (если вы используете Apache) и включите следующие правила:

# IE: force download of .xxx files
AddType application/octect-stream .xxx
<Files *.xxx>
  ForceType application/octet-stream
  Header Set Content-Disposition attachment
</Files>

Ответ 8

Вы можете настроить это в своем http-заголовке

httpResponse.setHeader("Content-Type", "application/force-download");
        httpResponse.setHeader("Content-Disposition",
                               "attachment;filename="
                               + "MyFile.pdf");