我在尝试将文件上传到目录时使用此代码:
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)
这有意义吗?请帮帮....
答案 0 :(得分:3)
如何将空格更改为短划线?
$playlist = str_replace(' ', '-', $playlist);
如果它是网址的一部分,我更喜欢小写字母,所以
$playlist = strtolower(str_replace(' ', '-', $playlist));
答案 1 :(得分:0)
基于Panther的建议。我不得不使用
$playlist = str_replace('-', ' ', $playlist);
所以实际上,当用户创建一个新的播放列表时,当用户端显示播放列表时,用空格( - )和LIKEWISE替换空格,我做相反的操作并用空格替换短划线它显示正确
$playlist = str_replace(' ', '-', $playlist);
这解决了问题,上传不必处理可怕的空间。