バイナリファイルをbase64にエンコードしてPHPページ(インラインコード)に入れたいのですが、そのページをリクエストするとブラウザにファイルがストリームされ、ダウンロードダイアログがポップアップします。
任意のアイデアバイナリファイルをPHPページにエンコードする
答えて
かなり簡単です。 readfileと同様に、httpヘッダーを使用してダウンロードを強制し、エンコードされた文字列をエコーします。
$decoded_data = base64_decode($encoded_data);
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . strlen($decoded_data);
ob_clean();
flush();
echo $decoded_data;
exit;
私はこれをすぐにdownvoteしませんが、あなたがそれを修正しない場合は...あなたはデータの長さを取得するために、一度出力してください。変数に 'base64_decode()'の結果を格納し、その変数を 'strlen()'と 'echo'に渡す必要があります。もしデータが100MBだったらどうなりますか? – DaveRandom
良い点。ファイル全体がメモリにロードされるので、大きなファイルに対してはこれをお勧めしませんが、少なくともこの方法では1回だけデコードされます。 – Juhani
私は個人的にはこれを絶対に推奨しませんでしたが、これを行う理由はほとんどありません。私はそれが潜在的に素晴らしいことを認めます(これは、私がこれを行うために考えることができる唯一の正当な理由です)しかし、小さな美的利得と大きなパフォーマンスコストは、それが実際に実行可能ではありません。しかし、ちょっと工夫すればあなたの答えは良いです - 文字列がスクリプト内で静的で、ファイルの提供に大きなオーバーヘッドがあり、FYIにそのようなHTTPヘッダーがないので、キャッシュヘッダーがクライアントのキャッシュに向かう方が良いでしょう「コンテンツ転送エンコーディング」として – DaveRandom
おそらく、この例では、あなたのhttp://www.php.net/manual/en/function.base64-encode.php#105200
よろしくを助けることができます!
- 1. バイナリファイルの読み取りとbase64のエンコード
- 2. TrasferringバイナリファイルPHP
- 3. PHPでHtmlエンコード
- 4. PHP JSONエンコード値
- 5. エンコードはPHP
- 6. リモートPHPスクリプト応答からバイナリファイルを取得するには?
- 7. JsonがPHPファイルをエンコードする
- 8. php javascriptのURLエンコード
- 9. PHP JSONエンコードはnl2br
- 10. PHPのXMLエンコード/デコードクラス
- 11. Rijndael PHPエンコードFLASHデコード
- 12. URLエンコードPHP/Objective C
- 13. PHPでのURLエンコード
- 14. バイナリファイルをSVNにコミットする
- 15. PHPカスタムJsonを抽象クラスにエンコード/デコード
- 16. MySQLデータをあるPHPページから別のPHPページに渡す
- 17. あるPHPページから別のPHPページにDOTNETクラスオブジェクトを渡す
- 18. PHPを使用してJSONPにMysqlデータをエンコードする方法
- 19. PHP +文字エンコード+ GETパラメータ
- 20. php to silverlight base64エンコード/デコード
- 21. WordpressのPHPエンコードの問題
- 22. PHPのファイル_get_contentsエンコードの問題
- 23. phpのエンコードとデコードのアルゴリズム
- 24. JavaScriptから.icsヘッダをPHPにエンコードする方法は?
- 25. PHPのDOMDocumentでhtmlエンティティのエンコードを無効にする
- 26. PHPでURLを正しくエンコードするには?
- 27. PostgreSQL + PHP + UTF8 =エンコードに無効なバイトシーケンス
- 28. VIM - バイナリファイルを元に戻す
- 29. PHP - バイナリファイルにバイトを作成して書き込む方法
- 30. バイナリファイルを変更する
は、私はアイデアをしたい – MrBassam
まあそれは印刷BASE64_DECODE(「02FAF ....」)は 'だ;'と、そのファイルがあなたのPHPインタプリタに使用可能なメモリよりも大きい場合に実行可能ではありません。 – mario
Mario、このusegulのコメントはコメントではなく、回答そのものを投稿してください:) – Gian