Is there any way to provide a direct link to a file & force the browser to download it using PHP?
E.g http://www.website.com/directory/file.jpg
We’re dealing with huge files here & Chrome in particular seems to have a problem rendering the image, so all the user sees is a blank screen when visiting the file directly. Even though they can still right-click in the blank screen & download the file it’s confusing.
We used to output the files from PHP yet we ran into memory problems so switched to providing a direct link instead. The files go up to approximately 5GB, they aren’t all images. We have zips, PDFs, PSDs etc.
Currently, the file is requested through a PHP script which accepts the ID of the file & obtain its URL. The PHP script then redirects to the user to full URL of the file.
How can we ensure that downloads are forced & we don’t run into memory issues with the larger files?
Thank you
Just use X-Sendfile
yet you need to configure it first … using XSendFilePath
if (file_exists($file)) { header("X-Sendfile: $file"); header("Content-Type: application/octet-stream"); header(sprintf("Content-Disposition: attachment; filename=\"%s\"", basename($file))); exit();}
Note* Please ensure $file
is properly escaped before you verify & serve the file
XSendFilePath
only works on Apache for other servers please see : Caching HTTP responses when they are dynamically created by PHP
No comments:
Post a Comment