2012-03-13 148 views
2

我在本地运行PHP(根本没有涉及Web服务器)。我无法访问路径中具有空格的文件。带空格的文件名

我的梗概的情况是

$indexFile = "file:///Users/username/Documents/My Folder/test.txt"; 
echo file_exists($indexFile); 

或:

$indexFile = "file:///Users/username/Documents/My‰20Folder/test.txt"; 
echo file_exists($indexFile); 

AFAICT这后者的情况下是一个合式文件方案URI。如果我在那里拖动文件,这正是浏览器位置字段中显示的内容。

无空格的URI没有任何问题。不幸的是,我无法将“我的文件夹”更改为“我的文件夹”,此外,我想找到一个解决方案。

我尝试过使用urlencode,rawurlencode,escapeshellarg,我试着用反斜线转义的空格"My\ Folder"代替%20,但这些都不起作用。我也通过谷歌和stackoverflow追捕,但虽然有很多suggstions,问题仍然没有答案:

如何使用包含空格的路径访问任意文件(在本地主机上)?

+5

尽量摆脱文件的'://'在一开始并看看会发生什么 – 2012-03-13 09:46:59

+0

顺便说一句,如果没有的那些工作并且最糟糕的是,尝试在系统的PATH中添加“Users/username/Documents/My Folder /”,然后在设置文件中通过名称(“test.txt”)引用文件。 – user980058 2012-03-13 09:54:37

+0

另外,我推荐'var_dump()'而不是'echo'来输出一个布尔值。 – 2012-03-13 09:55:37

回答

1

从第一个代码片段中删除第一个file://。它会工作。

$indexFile = "file:///Users/username/Documents/My Folder/test.txt"; 
echo file_exists(str_replace("file://", "", $indexFile)); 
2

这看起来像一个Mac OSX上的文件系统,所以这应该工作:

$indexFile = "/Users/username/Documents/My Folder/test.txt" 
echo file_exists("${indexFile}");