Πώς να εξαναγκάσετε τη λήψη αρχείων με PHP

Θέλω να απαιτήσω τη λήψη ενός αρχείου όταν ο χρήστης επισκέπτεται μια ιστοσελίδα με PHP. Νομίζω ότι έχει να κάνει με το file_get_contents, αλλά δεν είμαι σίγουρος πώς να το εκτελέσω.

$url = "http://example.com/go.exe";

Μετά τη λήψη ενός αρχείου με το header(location) δεν γίνεται ανακατεύθυνση σε άλλη σελίδα. Απλά σταματάει.

Διαβάστε τα έγγραφα σχετικά με την ενσωματωμένη συνάρτηση PHP readfile

$file_url = 'http://www.myremoteserver.com/file.exe';
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary"); 
header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\""); 
readfile($file_url); // do the double-download-dance (dirty but worky)

Επίσης, βεβαιωθείτε ότι έχετε προσθέσει τον κατάλληλο τύπο περιεχομένου με βάση το αρχείο σας application/zip, application/pdf κλπ. - αλλά μόνο αν δεν θέλετε να ενεργοποιήσετε το παράθυρο διαλόγου save-as.

Σχόλια (5)
header("Content-Type: application/octet-stream");
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"file.exe\""); 
echo readfile($url);

είναι σωστό

ή καλύτερα ένα για αρχεία τύπου exe

header("Location: $url");
Σχόλια (5)
<?php
$file = "http://example.com/go.exe"; 

header("Content-Description: File Transfer"); 
header("Content-Type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=\"". basename($file) ."\""); 

readfile ($file);
exit(); 
?>

Ή, όταν το αρχείο δεν μπορεί να ανοίξει με το πρόγραμμα περιήγησης, μπορείτε να χρησιμοποιήσετε απλώς την επικεφαλίδα "Τοποθεσία":

<?php header("Location: http://example.com/go.exe"); ?>
Σχόλια (5)