Я пытаюсь загрузить файл xlsx, используя readfile ().
Имя файла представляет собой строковую переменную ($ costing_url), которая содержит пробелы и извлекается из базы данных MySQL на основе идентификатора href’d.
Пример:
$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
не имеет пробелов в примере пути / имени файла A работает нормально.
Исследования показали, что двойные кавычки необходимы для размещения пробелов, что в примере B подтверждается.
Моя проблема в том, что я не могу правильно избежать двойных кавычек в readfile()
, Я пробовал все возможные способы, но это не переведет строку ($costing_url)
когда я пытаюсь это процитировать.
Любая помощь приветствуется.
Это не имеет ничего общего с пробелами. Поле в базе данных имело возврат каретки <CR> в конце поля.
Вот немного больше подробностей, если другие испытывают аналогичную проблему: я обрезал строку, чтобы удалить задний возврат каретки
$costing_url = rtrim(costing_url, "\r");
а также изменил строку readfile, чтобы быть
readfile((string)$costing_url);
не используйте «\», используйте «/»
например:
$ costing_url = «X: / Sys_Prod / WAResponse / Americas Division / 2015 / OMA — Мексика / ACA (vMUSE AOPS) AATC Costing 09-10-2015 ver (a) .xlsx»