我在尝试将文件上传到目录中时使用此代码:
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)
这有意义吗?请帮忙....
将空格更改为破折号怎么样?
$playlist = str_replace(' ', '-', $playlist);
如果它是URL的一部分,我更喜欢小写字母,所以
$playlist = strtolower(str_replace(' ', '-', $playlist));
基于黑豹的建议。我不得不使用
$playlist = str_replace('-', ' ', $playlist);
所以实际上,当用户创建新的播放列表时,空格会替换为破折号 (-),同样,当播放列表显示在用户端时,我做相反的事情,用空格替换破折号,以便它正确显示
$playlist = str_replace(' ', '-', $playlist);
这解决了问题,上传不必处理可怕的空间。