Я схватил этот кусок кода со страницы ReadFile PHP.net:Пробелы в имени файла в Zend Framework действие аналогично ReadFile
<?php
// Action controller
public function someAction() {
$response = $this->_response;
// Disable view and layout rendering
$this->_helper->viewRenderer->setNoRender();
$this->_helper->layout()->disableLayout();
// Process the file
$file = 'whatever.zip';
$bits = @file_get_contents($file);
if(strlen($bits) == 0) {
$response->setBody('Sorry, we could not find requested download file.');
}
else {
$response->setHeader('Content-type', 'application/octet-stream', true);
$response->setBody($bits);
}
}
?>
Он прекрасно работает с большинством файлов, но когда я проверить его на файл с пробелами в имени файла он говорит, что не может найти запрошенный файл. Любые предложения, или есть лучший способ сделать readfile в Zend Framework, где в имени файла могут быть пробелы?
Нет кубиков там. Он помещает + в имя, и я получаю сообщение «Извините, мы не смогли найти запрошенный файл загрузки». – Stepppo
Вы правы. Вместо этого используйте 'rawurlencode()'. Это переводит пробелы в '% 20' вместо' + '. Не используйте 'str_replace()' :) –
Я не мог заставить rawurlencode() работать. Просто любопытно, почему бы не использовать str_replace()? – Stepppo