PHP не удалось загрузить PDF размером более 1 МБ - PullRequest
0 голосов
/ 24 января 2019

У меня проблема при загрузке PDF размером более 1 МБ в Chrome PDF Viewer.но не проблема, когда PDF загружается меньше 1 МБ.

Here the picture when I load 800kb pdf

Here the picture when I load 1,8mb pdf

И это не только в Chrome, но Mozilla Firefox не может загрузить его тоже.

Вот мой код:

`<?php 
    include "/MODEL/db.php";
    $sql = "SELECT SIUP from $DBVCE.VENDORREQUEST where ID='11079'";
    $query = mssql_query($sql,$con);
    while($query_db = mssql_fetch_assoc($query)){
        $FILE = $query_db['SIUP'];
    }
    echo '<object height="100%" width="100%" 
    data="data:application/pdf;base64,'.base64_encode($FILE).'">';
?>`

SIUP, выбранный в моем запросе, является varbinary (MAX).Он содержит значение, подобное этому (0xFFD8FFE12 ...)

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Я нашел проблему.Это происходит из-за того, что моя переменная php может содержать до 1 048 576 байт.Но мой PDF-файл (в varbinary) составляет около 1280 345 байт.Поэтому я изменяю файл php.ini, как показано ниже

До и После

Просто измените mssql.textlimit = 1048576 на mssql.textlimit = n
Иmssql.textsize = 1048576 до mssql.textsize = n в файле php.ini
Где n - желаемая длина текста

0 голосов
/ 24 января 2019

Вы пытаетесь представить весь документ в виде URL-адреса, закодированного в base64, в результате чего URL-адрес имеет длину несколько мегабайт.Почти наверняка есть ограничение на длину, поддерживаемую браузером, и это дает вам вашу проблему.

Вместо того, чтобы отображать HTML-страницу, содержащую этот URL, вы можете просто передать содержимое документа непосредственно в браузер и сообщитьбраузер тип контента с заголовком HTTP:

header('Content-Type: application/pdf');
echo $FILE;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...