Reputation:
I have a basic script that allows my site members to upload short samples of their compositions for customers to listen to.
Some file names have spaces which obviously causes problems when trying to play the samples. Is there a way to replace these spaces with underscores between uploading to the temp directory and moving the file to the 'samples' directory?
<?
$url = "http://domain.com/uploads/samples/";
//define the upload path
$uploadpath = "/home/public_html/uploads/samples";
//check if a file is uploaded
if($_FILES['userfile']['name']) {
$filename = trim(addslashes($_FILES['userfile']['name']));
//move the file to final destination
if(move_uploaded_file($_FILES['userfile']['tmp_name'],
$uploadpath."/". $filename)) {
echo "
bla bla bla, the final html output
";
} else{
if ($_FILES['userfile']['error'] > 0)
{
switch ($_FILES['userfile']['error'])
{
case 1: echo 'File exceeded upload_max_filesize'; break;
case 2: echo 'File exceeded max_file_size'; break;
case 3: echo 'File only partially uploaded'; break;
case 4: echo 'No file uploaded'; break;
}
exit;
}
}
}
?>
Upvotes: 5
Views: 17001
Reputation: 488374
After this line:
$filename = trim(addslashes($_FILES['userfile']['name']));
Write:
$filename = str_replace(' ', '_', $filename);
A filename like hello world.mp3 (two spaces) would come out as hello__world.mp3
(two underscores), to avoid this you could do this instead:
$filename = preg_replace('/\s+/', '_', $filename);
Upvotes: 14
Reputation: 1694
try;
$filename = trim(str_replace(" ","_", $_FILES['userfile']['name']));
Upvotes: 0
Reputation: 191729
$filename = str_replace(' ', '-', trim(addslashes($_FILES['userfile']['name'])));
Why addslashes
though? This also seems a little too simple -- am I missing something?
Upvotes: 0