Is it possible to let your user download a file with a different name?
For example, there is a file called "4324ffsd34.jpg". I want people to download it via download.php, with a different name (like "filetodownload.jpg"), without renaming the original file.
-
You can also do this in Apache with mod_rewrite without needing to hit your PHP scripts. May not be applicable to your situation, but if it is, it could improve performance.Artelius– Artelius2009年10月27日 01:34:52 +00:00Commented Oct 27, 2009 at 1:34
5 Answers 5
Sure, use a Content-disposition header
header('Content-Disposition: attachment; filename="filetodownload.jpg"');
if you wish to provide a default filename, but not automatic download, this seems to work.
header('Content-Disposition: filename="filetodownload.jpg"');
3 Comments
readfile()
or fread()
to do itSure you can, just try something like this:
$original_filename = '4324ffsd34.jpg';
$new_filename = 'my_new_filename_is_detailled.jpg';
// headers to send your file
header("Content-Type: application/jpeg");
header("Content-Length: " . filesize($original_filename));
header('Content-Disposition: attachment; filename="' . $new_filename . '"');
// upload the file to the user and quit
readfile($original_filename);
exit;
Hope it helps!
Comments
There is also another way if you are using html5
<a href="link/to/my/file/with/a/name/i/dont/like.jpg" download="MyFile.jpg">Download</a>
Cheers :3
2 Comments
Nothing wrong with the above but I had to add:
ob_clean();
flush();
before readfile
otherwise I can not open the download jpg/png file
1 Comment
<a href="4324ffsd34.jpg" download="filetodownload">Download</a>