Мне нужно сохранить pdf-файл в BLOB (база данных MsSql 2012, но мне тоже нужно будет работать и в 2008 году).Сохранение PDF в BLOB (на сервере mssql) и вывод его обратно на веб-сайт (php)
Вот подборка того, что я пытался до сих пор:
(Файл where I save pdf into database
)
function preparePDF2String($filepath)
{
$handle = @fopen($filepath, 'rb');
if ($handle)
{
$content = @fread($handle, filesize($filepath));
$content = bin2hex($content);
@fclose($handle);
return "0x".$content;
}
}
$out = preparePDF2String('pdf/pdf.pdf');
$q_blob = "INSERT INTO HISTORIA_ARCHIWUM_test(PDFName, PDFData) VALUES('First test pdf', $out) ";
$r_blob = mssql_query($q_blob,$polacz);
Results
(ок, я думаю)
(Теперь PHP файл where I try to output the pdf
)
// header('Content-type: application/pdf');
// readfile('pdf/pdf.pdf'); - this works just fine, so pdf is ok
$q_blob = "select top 1 * from HISTORIA_ARCHIWUM_test";
$r_blob = mssql_query($q_blob,$polacz);
$w_blob = mssql_fetch_array($r_blob);
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="the.pdf"');
echo $w_blob['PDFData'];
//echo hex2bin ($w_blob['PDFData']); - I also tried this - same problem
Проблема: Когда я пытаюсь вывести pdf в браузере, я получаю ошибку (этот формат pdf не поддерживается). Он также не будет открыт в Adobe Reader. Я предполагаю, что я выводил это неправильно, но, может быть, это так, как я его сохраню?
Почему бы не сохранить PDF-файл за пределами базы данных в файловой системе, сохраните ссылку на свой путь в базе данных и используете ли PHP ссылку (например, изображения)? Вы избегаете преобразования двоичного содержимого в строку. – Parfait
Это мое требование для клиентов. Ему нужен большой pdf-репозиторий, который легко скопировать (автоматическое резервное копирование - один большой файл базы данных) –