IE8 Выпуск: файл PDF отображается как встроенный
-
29-09-2019 - |
Вопрос
Я загружаю PDF с моего сервера. Я устанавливаю «контент-н-н-рол» как «привязанность». Его работает очень хорошо, это Firefox. Но в IE8 его отображается как встроенный. Любые быстрые указатели, чтобы решить эту проблему?
Редактировать:
Я использую SPRIONS, чтобы написать поток массива байтов PDF. И используя JSP на стороне клиента для отображения.
Сторона клиента:
Я использую DHTML Grid и сохраняя тег. Код в сети выглядит как:
<a href='javascript:viewPDF(14)' target="_self" >View</a>
На щелчок этого метод ViewPDF вызывается. Я сохранил этот код в моем файле JavaScript.
function viewPDF(id) {
$("#pdfID").val(id);
$("#myform").attr('action',url);
$("#myform").submit();
}
Сервер боковой кодовой базы:
ByteArrayOutputStream reportBAOS = getPDFByteArrayStream();/*This is my method which returns the byte array stream.*/
response.setContentType("application/pdf");
response.setHeader("Content-Disposition","attachment; filename=testfile");
response.setHeader("Pragma","Public");
response.setHeader("Cache-Control","must-revalidate,post-check=0,pre-check=0");
response.setHeader("Expires","0");
ServletOutputStream os = response.getOutputStream();
os.write(reportBAOS.toByteArray());
os.flush();
os.close();
Решение 2
Я провел день, чтобы выяснить, каков был вопрос. Но наконец я получил это.
Я не могу сказать Эван МулавскийОтвет не так. Я пробовал с его кодом даже. Но никакой помощи. Наконец я обнаружил, что расширение имени файла отсутствует. Я просто добавил .pdf testfile.
response.setHeader("Content-Disposition","attachment; filename=testfile.pdf");
Теперь я удалил следующее.
response.setHeader("Pragma","Public");
response.setHeader("Cache-Control","must-revalidate,post-check=0,pre-check=0");
response.setHeader("Expires","0");
Даже с вышеуказанным кодом все еще я получаю PDF в качестве вложения.
Другие советы
Добавьте эти заголовки:
header("Pragma: public"); //This one may work by itself.
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("200 HTTP/1.0 OK"); //HTTP 1.0 Compatible
Это заставит Internet Explorer загрузить файл с сервера.
Я согласен с мультиплексором. На самом деле проблема в том, что если «имя файла» не заканчивается суффиксом, который связан с Acrobat Reader в Windows. Как только вы добавите «.pdf», это работает нормально.
Тогда есть питфаль Cache-Control: no-cache
который приведет к тому, чтобы рвать. Использовать Cache-control: private
предотвратить кэширование.