我从PHP.net 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);
}
}
?>
它适用于大多数文件,但是当我在文件名中包含空格的文件上测试它时,它说它无法找到所请求的文件。有什么建议,还是有更好的方法在Zend Framework中做一个文件,文件名中可以有空格?
答案 0 :(得分:1)
从file_get_contents()
手册页:
注意:如果您要打开URI 特殊字符,例如空格, 你需要用URI编码URI
urlencode()
(修改:使用rawurlencode()
将空格转换为%20
而不是+
)
因此,在使用之前需要rawurlencode()
文件名:
$file = rawurlencode('whatever.zip');
答案 1 :(得分:0)
我用字符串替换删除了文件名中的空格,现在它可以工作:
$file = str_replace(" ","%20",$file);