2015-01-06 50 views
1

试图将文件上载到一个目录中,当我使用此代码:php,文件上传到标题中带有“空格”的目录?

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

它只要工作正常,为$播放列表变量是一个字符串(无空格)

但当变量$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

由于浏览器不支持URL中的空格,所以用短划线( - )或分数(_)除去空格。 –

+0

用户正在创建目录名称(例如“Greatest Hits”,“20世纪80年代的Hits”等)。这是一个用户体验问题,我不能要求用户制作播放列表名称,不得有空格... – NetTemple

+0

文件名有空格并且正在上传,它只是导致问题的$播放列表字符串。 – NetTemple

回答

3

如何将空格更改为破折号?

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

如果它是URL的一部分,我喜欢那里的小字母,所以

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

准确地说,这是我要建议..你很快.. –

+0

因此,当用户创建一个新的播放列表 - 你建议更换空间(所以“最巨大的命中”成为“最伟大的命中”)。如果是这种情况,当用户实际显示他们的“播放列表”列表时,我可以将它们显示回原始吗?通过一些如何颠倒过程(即用空格替换“ - ”)。作为用户体验问题,我可以根据您的建议在后台添加目录,但前端必须显示更方便用户的内容。 – NetTemple

+0

与小写字母相同 - 我可以在后端执行此操作,但是当它们显示在前端时,它们必须是上和下。 – NetTemple

0

基于豹的建议。我实际上使用

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

因此,当用户创建新的播放列表,空间被替换了用破折号( - ),同样,当显示在用户侧的播放列表,我却反其道而行之并更换了用空格破折号,使其正确显示

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

这解决了这个问题,并上传不必对付可怕的空间。

+0

谢谢你的帮助和建议! – NetTemple