I can download remote files using PHP but how do you download from a link that pushes headers out? I mean, you can click on some links and it will force a download and present you with dialog box to save the file. How can I download and save this sort of thing using PHP?
Any examples or links to tutorials would be great since I couldn’t find anything useful on this topic.
Thank you for any help
Updated and [SOLVED]
<?php set_time_limit(300); // File to download $remoteFile = $_GET['url']; $file = fopen($remoteFile, 'r'); if (!$file) { echo '<p>Unable to open remote file.\n'; exit; } $line = ''; while (!feof ($file)) { $line .= fgets ($file, 4096); } //readfile($line); file_put_contents('here2.mp4', $line); fclose($file); ?>
Just tried to reproduce situation. Gubmo is right, this download method works for me with Content-Type: application/octet-stream and Content-type: application/force-download headers.
As explained here, HTTP 410 means that URL requested by the client is no longer available from that system. This is not a ‘never heard of it’ response, but a ‘does not live here any more’ response. Maybe they have some kind of antileach system.
This should be investigated. If they need cookies — stream-context-create can help. Or maybe they check referer. But I am almost sure that problem is not in headers.
Hope this helps.
UPD Sample code you’ve asked about.
Same as yours.