2016-01-06 44 views
0

我正在尝试使用readfile()下载xlsx文件。 文件名是一个字符串变量($ costing_url),它具有空格,并根据href'd ID从MySQL数据库中提取。在readfile中使用空间()

实施例:

$costing_url="X:\Sys_Prod\WAResponse\Americas Division\2015\OMA - Mexico\ACA (vMUSE AOPS) AATC Costing 09-10-2015 ver(a).xlsx" 

readfile($costing_url); 

---导致 “未能打开流” 的错误。

readfile("X:\Sys_Prod\WAResponse\Americas Division\2015\OMA - Mexico\ACA (vMUSE AOPS) AATC Costing 09-10-2015 ver(a).xlsx"); 

---工作得很好。

如果$costing_url在路径/文件名示例中没有任何空格,则工作正常。

研究表明,双引号需要容纳的空间,这是例证B证明是真实的。

我的问题是我无法在readfile()内正确转义双引号。我尝试了所有我能想到的方式,但是当我尝试引用它时,它不会翻译字符串($costing_url)

任何帮助表示赞赏。

+0

您是否试过”$ {costing_url}“? – marian0

+1

在第一个和第二个例子之间处理路径字符串的方式几乎没有区别。这使我相信代码或两个示例之间运行代码的环境存在差异。例如。不同的用户,CLI与SAPI,不同的环境等 – Sammitch

回答

0

它与空间没有任何关系。数据库中的字段在字段末尾有回车< CR>。

这里是一个更详细一点,如果别人遇到类似的问题:我修剪字符串删除后回车

$costing_url = rtrim(costing_url, "\r"); 

,也改变了ReadFile的线是

readfile((string)$costing_url); 
+0

我通常做的检查这个(作为一个快速的“十六进制”般的编辑器)是使用'urlencode'来暴露这些字符。 '的var_dump(用urlencode($ VAR1)); var_dump(urlencode($ var2));'在'\ r' [它会以'%0D']结尾(https://eval.in/502171) – h2ooooooo

0

唐使用“/”,使用“/”,使用“/”,使用“/”

ex: $ costing_url =“X:/ Sys_Prod/WAResponse/Americas Division/2015/OMA-墨西哥/ ACA(vMUSE AOPS)AATC成本ing 09-10-2015 ver(a).xlsx“

+0

“\”是正确的。这是Windows。 – FeedTuna