У меня есть PDF-файл в виде большого двоичного объекта, который я пытаюсь отправить на php, чтобы он был сохранен локально на моем веб-сервере. В настоящее время, если я использую saveAs () для локального сохранения PDF-файла, он будет читаем и не поврежден. Однако, как только данные отправляются в виде форм-данных через мой php-скрипт, они сохраняются в большем размере файла, который имеет потерю данных, и в итоге не может быть открыт в Adobe Reader.
Я просмотрел два файла PDF рядом друг с другом, и вы можете видеть, что символы certian просто не копируются.
Разные PDF-файлы, слева работает PDF, справа повреждена
Я читаю блоб с помощью FileReader и добавляю данные формы с результатом. Затем я использую XMLHttpRequest для отправки данных в мой PDF-файл, где он записывает файл.
Я предполагаю, что это ошибка кодирования, но я просто недостаточно знаю, как кодируются файлы, чтобы провести мое собственное образованное расследование.
function transferData(){
var data = new FormData();
var reader = new FileReader();
reader.readAsBinaryString(blobHolder);
reader.addEventListener('loadend',
function(){
data.append("data" , reader.result);
var xhr2 = new XMLHttpRequest();
xhr2.open( 'post', 'php/savefile.php', true );
xhr2.send(data);
});
}
<?php
if(!empty($_POST['data'])){
$data = $_POST['data'];
$fname = "serverGeneratedPDF.pdf";
$file = fopen("../upload/" .$fname, 'w+');
fwrite($file, $data);
fclose($file);
}
?>