Вопрос

Я загружаю 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 предотвратить кэширование.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top