Reply to Re: how do I tell a browser the name of a file, for download, if the file has open space in its name?

Your name:

Reply:


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.

[Back to original message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация