|
Posted by The Natural Philosopher on 10/20/07 10:33
lawrence k wrote:
> 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?
>
Yu are looking n the wrong place.
is what happens before the first line that interests me
$fileToBuy = $_GET["fileToBuy"];
How is that GET variable generated, and what does
echo $filetobuy;
display?
My guess is the name is truncated before it even reaches the part you
showed us.
Navigation:
[Reply to this message]
|