I have some mp3 files which are named "my-audio.mp3" but now the client wants the visitor to be able to download and save these files to their desktop. He doesn't like the name with the hyphen and wants them renamed to "MyAudio.mp3". Other than putting the renamed files into their own 'download' folder, how can I make this work on Apache?
2 Answers
You can do this in PHP like so:
<?php
// We set the file type here
header('Content-Type: audio/mpeg');
// un-comment this line if you want to enforce download and comment the line above
// Content-Type "application/force-download"
// It will be called MyAudio.mp3
header('Content-Disposition: attachment; filename="MyAudio.mp3"');
// The MP3 Source
readfile('the-original-filename.mp3');
?>
-
This is what I was thinking I'd have to do, and have no problems with that, but was also wondering if Apache had any automagic to do the same thing.– RobMar 4, 2013 at 14:32
-
Simple things such as the renaming is always done on the page and not within the web hosting software. There is no Apache Module for doing this as far as I know. Mar 4, 2013 at 14:43
Apache can be configured to follow symbolic links. I tested creating a symbolic link for the desired name to the old name. On the command line I did:
ln -s My-Music.mp3 MyMusic.mp3
After which, Apache was happy to serve up the file at either http://localhost/My-Music.mp3
or http://localhost/MyMusic.mp3
To make it work you just have to have the correct option turned on in your .htaccess
file:
Options +FollowSymLinks
-
But the same audio file must play online or be downloaded depending on which link is clicked. In our case, there is a .../download/MyMusic.mp3 URL.– RobMar 4, 2013 at 17:35