Ako vynútiť sťahovanie súborov pomocou PHP

Chcem vyžadovať, aby sa pri návšteve webovej stránky používateľom pomocou PHP stiahol súbor. Myslím, že to má niečo spoločné s funkciou file_get_contents, ale nie som si istý, ako ju vykonať.

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

Po stiahnutí súboru pomocou header(location) nedochádza k presmerovaniu na inú stránku. Jednoducho sa zastaví.

Prečítajte si dokumentáciu o vstavanej funkcii 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)

Tiež sa uistite, že ste pridali správny typ obsahu na základe vášho súboru application/zip, application/pdf atď. - ale len v prípade, že nechcete spustiť dialógové okno uloženia ako.

Komentáre (5)
header("Content-Type: application/octet-stream");
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"file.exe\""); 
echo readfile($url);

je správne

alebo lepšie pre súbory typu exe

header("Location: $url");
Komentáre (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(); 
?>

Alebo, ak súbor nie je možné otvoriť pomocou prehliadača, môžete jednoducho použiť hlavičku Location:

<?php header("Location: http://example.com/go.exe"); ?>
Komentáre (5)