2016-01-06 3 views
0

Я пытаюсь загрузить файл xlsx с помощью readfile(). Имя файла представляет собой строковую переменную ($ costing_url), которая имеет пробелы и извлекается из базы данных MySQL на основе идентификатора href'd.using space in 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 vs SAPI, другая среда и т. д. – Sammitch

ответ

0

Это не имело никакого отношения к пространствам. Поле в базе данных имело возврат каретки < CR> в конце поля.

Вот немного более подробно, если другие испытывают подобный вопрос: я подрезал строку для удаления роспускного возврата каретки

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

, а также изменил ReadFile линии, чтобы быть

readfile((string)$costing_url); 
+0

Что я обычно делаю, чтобы проверить это (как быстрый «hex» -подобный редактор), используйте «urlencode», который будет выставлять эти символы. 'Var_dump (UrlEncode ($ var1)); var_dump (urlencode ($ var2)); 'В случае' \ r' [это закончилось бы с '% 0D'] (https://eval.in/502171) – h2ooooooo

0

дона 't использовать "\", использовать "/"

ex: $ costing_url = "X:/Sys_Prod/WARsponse/Americas Division/2015/OMA - Мексика/ACA (vMUSE AOPS) Стоимость AATC ing 09-10-2015 ver (a) .xlsx "

+0

« \ »верна. Это Windows. – FeedTuna