У меня есть автоматический скрипт PHP, который подключается к почтовому ящику, читает электронные письма и обрабатывает их для создания билетов. Некоторые из этих писем содержат различные типы вложений файлов. Мой скрипт использует следующий код для сохранения файлов непосредственно в посттермическую базу данных. Я использую codeigniter.PHP base64_encode PDF-файл поврежден
public function saveFiles($filename, $fileurl, $jobid) {
$filedata = array();
$filedata['filename']= $filename;
$filedata['filedescription'] = 'Incoming attachment.';
$filedata['fileargid'] = $jobid;
$filedata['fileaddedon'] = date('Y-m-d H:i:s P');
$filedata['filedata'] = pg_escape_bytea(base64_encode(file_get_contents($fileurl)));
$results = $this->db->insert('file', $filedata);
if ($results)
return $this->db->insert_id();
else
return FALSE;
}
Однако большинство файлов сохраняется без каких-либо проблем. Моя проблема в том, что некоторые файлы PDF повреждаются при развертывании этого скрипта. Сценарий сохраняет файлы на локальный диск перед кодировкой до base64. Все эти файлы также полезны. Я подозреваю, что что-то происходит во время pg_escape_bytea(base64_encode(file_get_contents($fileurl)))
.
Я разработал этот скрипт, используя php 5.5.9/Ubuntu на моем локальном ПК, а не файлы, поврежденные там. Но сценарий развернут на сервере Ubuntu с php 5.3.10, и файлы там повреждены.
Я попытался выяснить, что вызывает это, но блокировки пока нет. Это из-за разных версий php?
Никто не имеет понятия? –
Код, который вы используете для чтения файла из базы данных, также будет интересен. И случайно, можете ли вы предоставить нам PDF-файл, который поврежден? Кроме того, PHP 5.3 заканчивается с 2014 года. Возможно, обновление - это решение ... – Kontrollfreak