2016-04-07 17 views
0

Angenommen, ich habe ein Gerät, das den Namen einer Datei kennt, die sie von meinem Server herunterladen möchten.PHP File Transfer

Wie kann ich die Datei an das Gerät, ohne das Gerät Zugriff auf das Dateisystem zu geben?

Beispiel: Angenommen, ich eine Seite ping.php haben, die eine GET-Anforderung für „something.zip“ erhält

ping.php kennt den Standort von something.zip (irgendwo auf dem Dateisystem des Servers), aber Ich kann dem Benutzer nicht den Zugriff auf das Dateisystem erlauben oder ihnen erlauben, den Speicherort der Datei zu kennen (sie muss sogar vor jemandem verborgen sein, der etwas wie wireshark verwendet).

Wie kann ich dieses Problem lösen?

Es könnte eine einfache Lösung sein, ich bin einfach nicht sehr gut in diesen Dingen auskennt.

Wenn es einen Unterschied macht werde ich einen Apache-Server auf einer Linux-Box wird.

+0

Dies ist eigentlich die Standardmethode Datei-Downloads durchgeführt werden: Sie senden HTTP-Header beschreibt die Datei und dann der Inhalt der Dateien innerhalb der Antwort, die vom PHP-Skript generiert wird. Das ist alles. – arkascha

Antwort

3

Sie können einen PHP-Skript erstellen die Dateiübertragung zu erleichtern, während die Datei in einem Ordner sitzt, die nicht über das Web zugänglich ist. So behandele ich Dateidownloads auf meinem System.

Es gibt eine beliebige Anzahl von Beispielskripts, die Sie die aktuelle Datei zu tun Übertragung verwenden. Der Schlüssel besteht darin, diese Datei außerhalb des webfähigen Dateisystems abzulegen.

Der Vollständigkeit halber hier einige Code, den ich in der Vergangenheit verwendet haben, eine Datei herunterladen in PHP zu tun:

$filename="filetodownload.xyz"; 
$cf = realpath("/non-webaccessible-folder/".$filename); 
$file=$cf; 

header('Content-Disposition: attachment; filename="' . basename($cf) . '"'); 
header("Content-Length: " . filesize($cf)); 
header("Content-Type: application/octet-stream"); 
readfile(realpath($cf)); 
+0

Entschuldigung ... Ich habe das aus einem Produktionsskript geholt und vergessen, auch dieses Stück auszuziehen. Es ist in meiner Situation notwendig. – LuvnJesus

+0

Danke! Dies scheint zu sein, was ich brauchte. Es gibt jedoch einige Dinge, die mir bezüglich dieses Codes nicht ganz klar sind. Siehe [DIESE NEUE FRAGE] (http://stackoverflow.com/questions/36499625/php-file-transfer-how-does-this-work) – JEJoll

Verwandte Themen