2016-01-09 4 views
4

Моя ситуация (все в PHP):Скачать PDF из Base64 строки

Что я получаю: кодировке Base64 из API.

Что я хочу: ссылка для загрузки этого документа в формате PDF. (Я уверен, что он всегда будет PDF-файл)

Я попытался это:

$decoded = base64_decode($base64); 
    file_put_contents('invoice.pdf', $decoded); 

но я вроде от потерян, не могу найти способ, чтобы загрузить его после декодирования.

Я надеюсь, что кто-то может мне помочь, спасибо заранее!

ответ

8

пример здесь кажется полезным: http://php.net/manual/en/function.readfile.php

В вашем случае:

<?php 
$decoded = base64_decode($base64); 
$file = 'invoice.pdf'; 
file_put_contents($file, $decoded); 

if (file_exists($file)) { 
    header('Content-Description: File Transfer'); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename="'.basename($file).'"'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($file)); 
    readfile($file); 
    exit; 
} 
?> 

Это должно заставить происходить загрузка.

+0

Thankyou! Это решило мою проблему. Теперь я сталкиваюсь с тем фактом, что мой файл PDF поврежден, и я получаю «Невозможно изменить информацию заголовка - заголовки, уже отправленные», если я поместил его внутри ссылки, но я должен был бы найти способ обойти это. Я отправлю ответ, как только я получу его для других людей. Если у вас есть какие-либо советы, дайте мне знать, еще раз спасибо! –

+0

Большое вам спасибо. Я добавил эту строку без ссылки ($ file); перед «выходом»; потому что я не хочу, чтобы файл хранился на сервере навсегда. –

Смежные вопросы