php,文件上传到目录"空格"标题?

时间:2015-01-06 11:37:39

标签: php

我在尝试将文件上传到目录时使用此代码:

if(move_uploaded_file($_FILES['upl']['tmp_name'], '../'.$acct_id.'/music/'.$playlist.'/'.$_FILES['upl']['name'])){
echo '{"status":"success"}';
exit;
}

只要$ playlist变量是单个字符串(没有空格),它就可以正常工作

但是当变量$playlist类似于"Greatest Hits"并且两个单词之间有空格时,代码将不起作用?

我确实尝试按照朋友的建议添加rawurlencode($playlist),但仍然没有运气:

if(move_uploaded_file($_FILES['upl']['tmp_name'], '../'.$acct_id.'/music/'.rawurlencode($playlist).'/'.$_FILES['upl']['name'])){
echo '{"status":"success"}';
exit;
}

我会尝试用不同的方式解释。

字符串中的问题是$playlist变量,而不是上传的文件名。

在我看来,您的建议将"rawurldecode"放在正在上传的文件名上。

我上传的文件确实有空格,只要$playlist没有空格就可以正常工作,所以问题在于目录标题放在$playlist内。

我试过了:

- htmlentities($playlist)
- urlencode($playlist)
- urldecode($playlist)
- rawurlencode($playlist)
- rawurldecode($playlist)

这有意义吗?请帮帮....

2 个答案:

答案 0 :(得分:3)

如何将空格更改为短划线?

$playlist = str_replace(' ', '-', $playlist);

如果它是网址的一部分,我更喜欢小写字母,所以

$playlist = strtolower(str_replace(' ', '-', $playlist));

答案 1 :(得分:0)

基于Panther的建议。我不得不使用

$playlist = str_replace('-', ' ', $playlist);

所以实际上,当用户创建一个新的播放列表时,当用户端显示播放列表时,用空格( - )和LIKEWISE替换空格,我做相反的操作并用空格替换短划线它显示正确

$playlist = str_replace(' ', '-', $playlist);

这解决了问题,上传不必处理可怕的空间。