|
Posted by lawrence k on 10/20/07 09:32
I've got a music studio for a client. Their whole studio is run with
Macintosh computers. Macintosh computers allow file names to have open
white spaces, such as "animal hospital.mp3".
I have a download script, so customers on the website can download
MP3s to their harddrive (rather than merely listen to it in their
browsers):
$fileToBuy = $_GET["fileToBuy"];
if ($fileToBuy) {
$pathToFile = "temporary_files/$fileToBuy";
if (!file_exists($pathToFile)) $pathToFile = "site_specific_files/
$fileToBuy";
if (!file_exists($pathToFile)) $pathToFile = "../httpdocs/
site_specific_files/$fileToBuy";
if (file_exists($pathToFile)) {
$size = @ filesize($pathToFile);
if ($size > 1) {
header("Content-Type: application/octet-stream");
header("Content-Length: $size");
header("Content-Disposition: attachment; filename=$fileToBuy");
header("Content-Transfer-Encoding: binary");
$pathToFile = urlencode($pathToFile);
$fh = fopen("$pathToFile", "r");
fpassthru($fh);
} else {
echo "Sorry, but we are unable to process this file at this
time.";
}
} else {
echo "Sorry, but we can not find a file named '$fileToBuy' at
'$pathToFile'. ";
}
} else {
echo "Sorry, but there doesn't seem to be a file named in the URL
(fileToDownload needed in url).";
}
This works fine except when it encounters a file with an open space in
it, and the studio has several thousand mp3s which have open spaces in
their name.
If a file has an open space, the above code seems to truncate the file
name at the first open white space. Instead of "animal hospital.mp3",
the browser starts to download "animal", with no file extension. And
the download fails - instead of 6 megabytes, only 1 kilobyte
downloads.
Any insights?
Navigation:
[Reply to this message]
|