2016-08-24 13 views
0

私はモバイルアプリを作成していて、安心してpdfファイルをダウンロードしたいのですが、可能かどうかわかりません。安心してIonicを使ってpdfファイルをダウンロード

$headers = array('Content-type: application/json','Authorization: ',); 
$fp = fopen (dirname(__FILE__) . '/localfile.tmp', 'w+'); 

$curl = curl_init($service_url); 
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($curl_post_data)); 
curl_setopt($curl, CURLOPT_USERPWD, $api_key); 
$file = curl_exec($curl); 
if ($file === false){ 
    $info = curl_getinfo($curl); 
    curl_close($curl); 
    die('error occured during curl exec. Additioanl info: ' . var_export($info)); 
} 

curl_close($curl); 
header('Content-type: ' . 'application/octet-stream'); 
header('Content-Disposition: ' . 'attachment; filename=report.pdf'); 
echo $file; 

angular.module('getPdf.Pdf', []).factory('Pdf', function ($http) { 
    var folUrl = urlRest + '/getPdf.php'; 
    return { 
     getPdf: function (pdfName) { 
      return $http.post(folUrl, pdfName).then(function (response) { 
        return response; 
      }); 
     } 
    }; 
}); 

ファイルをオブジェクトとして取得できますが、それが正しいかどうかわかりません。

+0

ファイルがサーバーから来ている場合、そのファイルをダウンロードするのに 'Content-Disposition'を使用するだけで済みませんか?サポートされているブラウザの数が増え、メモリの問題も少なくなりました – Endless

答えて

0

これは、Ionicで動作するはずのAngularJSを使用してサービスからPDFファイルを保存するために使用したコードです。

getPdf: function (pdfName) { 
      return $http.post(folUrl, pdfName).then(function (result) { 
       var file = new Blob([result.data], {type: 'application/pdf'}); 
       var timestamp = new Date().toUTCString(); 
       saveAs(file, pdfName +timestamp+ ".pdf"); 
      }); 
     } 

saveas関数が単独で機能しない場合は、プロジェクトにFileSaver.jsを追加する必要があります。 https://github.com/eligrey/FileSaver.js/

関連する問題