PDA

View Full Version : Replacing space with "_" when UL a file


wooolF[RM]
05-13-2002, 03:23 AM
]Hello everybody :)

have a little problem here.
I wrote a little script to upload/download files to one specific folder on my host.

problem is : u can upload files with space in the filename, but then u can't download it, it will link to somethink like : http://www.bla.com/upload/bo instead of http://www.bla.com/upload/bo om.jpg

So I though that there may be a function replacing space with %20 or simple "_".

I tried to add $file1=str_replace(" ","_",$file);
and then use code (after all checks for right extensions, file size limit etc)@copy($file1, "$absolute_path/$file_name")but it haven't helped...

I know it's really simple... but I can't hit it... :cross-eyed:

Can anyone help pls? Thanx!

wooolF[RM]
05-13-2002, 04:15 AM
]There?re strip_tags(), stripslashes and stripcslashes ? why not a
stripspaces() function too? Here it is.

function stripspaces($tex)
{
return(str_replace(" ","",$tex));
}

any way anyone can help me implement this into my script? I'm just lost... :/

wooolF[RM]
05-13-2002, 04:37 AM
]have also tried to link to file as <a href=$dl/$file1>blabla</a> and then adding variable like $file1=str_replace(" ","_",$file);
still no luck :(

Logician
05-13-2002, 10:05 AM
$file = strtr($file, " ", "_");

should help..

Also your both examples seem correct to me in the first look. Are you sure you didnt miss another thing? For example in your code you assigned the modified name to variable "$file1". Are you sure you use the variable "$file1" instead of $file after you replaced the chars..

As for calling your function, this is the line you should use:
$file=stripspaces($file);

wooolF[RM]
05-13-2002, 12:26 PM
]it worked! thanx a lot :)

just one last problem (really last one)

file called bom'b'a.jpg after uploading will be called bom\-b\-a.jpg if I add $file=str_replace("'","-",$file);

wny ideas why? :(

wooolF[RM]
05-13-2002, 01:20 PM
]Originally posted by Logician
As for calling your function, this is the line you should use:
$file=stripspaces($file);

erm...
I use $dir = opendir($absolute_path);
while($file = readdir($dir)) {
if (($file != "..") and ($file != ".")) {
$file=str_replace(" ","%20",$file);
$list .= "$file"
echo $list;That gives me full listing og the given folder...

Now I tried to add size ( $size ) of the file right after name of the file ( $file ) by using this script:// $size is the filesize (in bytes)
function rendersize($size) {

$type = 'bytes';

if ($size > '1023') {

$size = $size/1024;
$type = 'KB';

}

if ($size > '1023') {

$size = $size/1024;
$type = 'MB';

}

if ($size > '1023') {

$size = $size/1024;
$type = 'GB';

}

if ($size > '1023') {

$size = $size/1024;
$type = 'TB';

}

// Fix decimals and stuff
if ($size < '10') $size = intval($size*100)/100;
else if ($size < '100') $size = intval($size*10)/10;
else $size = intval($size);

// Comment the following line if you want X.XX KB displayed instead of X,XX KB
$size = str_replace("." , "," , $size);
return "$size $type";
}
I have NO idea where to insert that script (before html? before head? before ... ?) and what variable to use after that.

I tried some variants like$list .= "$file $size $type"but got just empty spaces instead of file size...
I'm sure I'm inserting that script in the wrong place or I have to remove return "$size $type";and insert it in other place... I really tried in over 1 hour or so, but couldn't solve this pussle :(

Sparkz
05-13-2002, 01:39 PM
Originally posted by wooolF[RM]
it worked! thanx a lot :)

just one last problem (really last one)

file called bom'b'a.jpg after uploading will be called bom\-b\-a.jpg if I add $file=str_replace("'","-",$file);

wny ideas why? :(

Try

$file=str_replace ("'","-",stripslashes ($file));


Looks like the ' is already escaped.

Logician
05-13-2002, 01:43 PM
The function requires to be called WITH a $size variable so as to return a result.

For example if the file size is kept in a variable called $file_size then you should replace line:

$list .= "$file"

AS

$list .= $file." (".rendersize($file_size).")";

As you see, you first send the file size to the function and then it returns it as "X Mb.".

Sparkz
05-13-2002, 01:44 PM
for the size-part, you can stick the function wherever you want, but to actually get any output from it, you'll have to call it :)

try $size = rendersize (filesize ($file));

or maybe filesize ($absolutepath.$file) in your case...

The parameter to the filesize-function has to be the filename with an absolute path.

Sparkz
05-13-2002, 01:45 PM
Hmm - guess you beat me to it :P

wooolF[RM]
05-13-2002, 02:04 PM
]Originally posted by Sparkz


Try

$file=str_replace ("'","-",stripslashes ($file));


Looks like the ' is already escaped.

U're da man! :bunny: Thanx a lot! working :)

wooolF[RM]
05-13-2002, 02:28 PM
]here's my codecase "download":
echo "
<html>
<head>
<title>File Download</title>
</head>
<body>
<center>
";
$list = "<table width=400 border=0 bordercolor=#5A0202 style=\"border-collapse: collapse\">";
$list .= "<tr><td width=400><center>Click To Download</td></tr>";
$dir = opendir($absolute_path);

function rendersize($size) {

$type = 'bytes';

if ($size > '1023') {

$size = $size/1024;
$type = 'KB';

}

if ($size > '1023') {

$size = $size/1024;
$type = 'MB';

}

if ($size > '1023') {

$size = $size/1024;
$type = 'GB';

}

if ($size > '1023') {

$size = $size/1024;
$type = 'TB';

}

// Fix decimals and stuff
if ($size < '10') $size = intval($size*100)/100;
else if ($size < '100') $size = intval($size*10)/10;
else $size = intval($size);

// Comment the following line if you want X.XX KB displayed instead of X,XX KB
$size = str_replace("." , "," , $size);
}

while (false !== ($file = readdir($dir))) {
if (($file != "..") and ($file != ".")) {

$list .= "<tr><td width=400><a href=$dl/$file>$file</a></td></tr>";
}
}

$list .= "</table>";
echo $list;
echo"
</center>
</body>
</html>";Fatal error: Cannot redeclare rendersize() in /home/wooolf/WWW/updown.php on line 45
where line 45 is function rendersize($size) {
Am I completely useless? :disappointed:

Sparkz
05-13-2002, 02:59 PM
First of all, move the rendersize-function out of the switch. Then make sure that there is only one copy of it being loaded on execution. Check to see if it might be present in an include-file or something.

wooolF[RM]
05-13-2002, 03:16 PM
]removed, checked... dupe from config.php (include) deleted...
no errors. good :)

now trying to find out wich variable to insert :)

wooolF[RM]
05-13-2002, 04:07 PM
]got it to work at last :) used $size = rendersize (filesize ($file));Thanx all who helped me out :) Nice to see people that still help others :)
Good luck.

Sparkz
05-13-2002, 04:10 PM
Well, I did tell you a few posts up to use that syntax ;)

wooolF[RM]
05-13-2002, 04:44 PM
]yep, thanx again :)

u can see live demo here : removed

still working on it thought :)

link will be removed in 30 min