Ich möchte Binärdatei in Base64 zu kodieren und es in PHP-Seite (inline mit dem Code), Und wenn diese Seite die Datei an den Browser streamen, Popup-Download-Dialog.
Irgendwelche IdeenEncodieren Sie Binärdatei in PHP-Seite
Antwort
Scheint ziemlich einfach. Verwenden Sie wie bei readfile http-Header, um den Download zu erzwingen, und geben Sie dann die codierte Zeichenfolge wieder.
$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;
Ich werde Sie nicht sofort für diese abmelden, aber wenn Sie es nicht beheben, könnte ich ... Sie haben die Zeichenfolge zweimal entschlüsselt, einmal, um die Länge der Daten zu erhalten und einmal, um es auszugeben. Sie sollten das Ergebnis von 'base64_decode()' in Variable speichern und die Variable an 'strlen()' und 'echo' übergeben - was wäre, wenn die Daten 100MB wären? – DaveRandom
Guter Punkt. Ich würde das immer noch nicht für große Dateien empfehlen, weil die ganze Datei in den Speicher geladen wird, aber zumindest so, dass sie nur einmal dekodiert wird. – Juhani
Ich persönlich würde es überhaupt nicht empfehlen, es gibt fast keinen Grund, dies zu tun. Ich gebe zu, es ist potentiell schön, eine ganze Anwendung in einer Datei zu speichern (was der einzig legitime Grund dafür ist), aber der kleine ästhetische Vorteil gegenüber den hohen Leistungskosten macht es nicht wirklich machbar. Aber Ihre Antwort ist gut, wenn ein wenig überentwickelt - Die Caching-Header würden besser in Richtung Client-Caching gesetzt werden, da die Zeichenfolge im Skript statisch ist und es einen großen Aufwand bei der Bereitstellung der Datei gibt, und FYI gibt es keinen solchen HTTP-Header als 'Content-Transfer-Encoding' – DaveRandom
Vielleicht ist dieses Beispiel können Sie http://www.php.net/manual/en/function.base64-encode.php#105200
Grüße helfen!
- 1. Wie Prozent in Java encodieren?
- 2. encodieren Python-Word-Dokument
- 3. Android Base64 Audiodatei encodieren/decodieren
- 4. So schreiben Sie Strings in Binärdatei
- 5. Binärdatei Leseoperationen in C?
- 6. Binärdatei in Bild konvertieren
- 7. encodieren/decodieren Bild mit base64 bricht Bild
- 8. encodieren Sonderzeichen Python für CSV-Ausgabe
- 9. C# nach Ruby sha1 base64 encodieren
- 10. Binärdatei in Ruby schreiben
- 11. Binärdatei Lesefehler
- 12. php dom get image src Pfad encodieren
- 13. php json_encode Encodieren die gleichen Daten zweimal
- 14. Wie aus Extjs.Class zu JSON String encodieren?
- 15. Unterschied zwischen Url Encode und HTML encodieren
- 16. Speichern Binärdatei
- 17. So laden Sie eine Binärdatei mit URLConnection
- 18. Binärdatei String
- 19. Senden einer Binärdatei in Tornado
- 20. nicht Binärdatei
- 21. Binärdatei herunterladen
- 22. Encodieren/Decodieren (Verschlüsseln/Entschlüsseln) datetime var in vb6
- 23. Binärdatei in Inno-Setup schreiben
- 24. Kopieren einer Binärdatei in Instanz
- 25. Caching einer Binärdatei in C#
- 26. C# Objekt in Binärdatei schreiben
- 27. Junk-Daten in Binärdatei schreiben
- 28. Pfad zur Binärdatei in C
- 29. R: Binärdatei in Matrix konvertieren
- 30. schreiben/lesen Binärdatei in Nim
Ich möchte nur die Idee – MrBassam
Nun, es ist 'Druck base64_decode (‚02FAF ....‘);' und nicht praktikabel, wenn die Datei größer als der Speicher auf Ihre PHP-Interpreter zur Verfügung steht. – mario
Mario, post diese usegul Antwort nicht als Kommentar, sondern eine Antwort selbst :) – Gian