English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In diesem Tutorial lernen Sie, wie Sie Dateien mit PHP zum Herunterladen zwingen.
Normalerweise benötigen Sie nicht unbedingt eine Serverseitige Skriptsprache (z.B. PHP), um Bilder, Zip-Dateien, PDF-Dokumente, Exe-Dateien usw. herunterzuladen. Wenn solche Dateien in einem öffentlich zugänglichen Ordner gespeichert sind, reicht es aus, einen Hyperlink zu dieser Datei zu erstellen. Der Browser lädt die Datei automatisch herunter, wenn der Benutzer auf den Link klickt.
sample.jpg">Bilddatei herunterladen</test.zip">Herunterladen der Zip-Datei</a> sample.jpg">Bilddatei herunterladen</masters.pdf">Herunterladen der PDF-Datei</a> sample.jpg">Bilddatei herunterladen</</a>/a> sample.jpg">Bilddatei herunterladen</<a href="downloads/a>
Ein Klick auf einen Link zu einer PDF- oder Bilddatei führt nicht direkt zum Herunterladen auf die Festplatte des Laufwerks. Der Datei wird nur im Browser geöffnet. Außerdem können Sie sie auf die Festplatte speichern. Standardmäßig werden zip- und exe-Dateien jedoch automatisch auf die Festplatte heruntergeladen.
Sie können die Funktion PHP readfile() verwenden, um Bilder oder andere Dateitypen direkt auf die Festplatte des Benutzers herunterzuladen. Hier erstellen wir eine einfache Bildergalerie, die es dem Benutzer ermöglicht, durch Klicken auf die Maus Bilderdateien aus dem Browser herunterzuladen.
Lassen Sie uns ein Namens " image-gallery.php" Datei und geben Sie folgenden Code in diese Datei ein.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Simple Image Gallery</title> <style type="text/css"> .img-box{ display: inline-block; text-align: center; margin: 0 15px; } </style> </head> <?php //Array mit Beispielfilenamen $images = array("kites.jpg", "balloons.jpg"); //Durchsuchen Sie das Array, um eine Bildergalerie zu erstellen foreach($images as $image){ echo '<div class="img-box">'; echo '<img src="images/' . $image . '" width="200" alt="' . pathinfo($image, PATHINFO_FILENAME) . '">'; echo '<p><a href="download.html?file=' . urlencode($image) . '">Herunterladen</a></p>'; echo '</div>'; } ?> </html>
Wenn Sie die obige Beispielcode sorgfältig überprüfen, werden Sie feststellen, dass der Download-Link auf die Datei "download.php" zeigt, der URL enthält auch den Dateinamen der Bilddatei als Query-String. Außerdem verwenden wir die Funktion PHP urlencode() zum Kodieren des Dateinamens der Bilddatei, um sicherzustellen, dass er als URL-Parameter übertragen werden kann, da der Dateiname möglicherweise ungesicherte Zeichen für URLs enthält.
Dies ist der vollständige Code der Datei "download.php", um die Zwangsdownoad von Bildern zu erzwingen.
<?php if(isset($_REQUEST["file"])){ //Parameter abrufen $file = urldecode($_REQUEST["file"]); //Dekodieren Sie den URL-kodierten String /* Testen Sie, ob der Dateiname unerlaubte Zeichen enthält Zum Beispiel die Verwendung von regulären Ausdrücken " ../” */ if(preg_match('/^.[-a--9_.]+-z]$/i', $file)){ $filepath = "images/. $file; // Downdload-Prozess if(file_exists($filepath)) { header('Content-Beschreibung: Dateiübertragung'); header('Content-Typ: application/octet-stream header('Content-Datei-Position: attachment; Dateiname="'.basename($filepath).'"'); header('Expires: 0'); header('Cache-Kontrolle: must-revalidate'); header('Pragma: public'); header('Content-Länge: ' . filesize($filepath)); flush(); //Spüle das Ausgabebuffer der System readfile($filepath); die(); } else { http_response_code(404); die(); } } else { die("Ungültiger Dateiname!"); } } ?>
Ebenso können Sie die强制下载其他文件格式,例如.doc,pdf文件等。
Beispiel oben (Abschnitt8ZeileDie regulären Ausdrücke im Brackets () erlauben keine Dateinamen, die mit einem Punkt beginnen oder enden, z.B. kites.jpg oder Kites.jpg, myscript.min.js und ähnliche Dateinamen, aber nicht kites.jpg. oder .kites.jpg.
Bitte lesen SieReguläre AusdrückeAnleitung, um die regulären Ausdrücke im Detail zu verstehen.