Zend Framework中的文件名空间操作类似于readfile

时间:2009-12-09 18:00:16

标签: zend-framework readfile

我从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中做一个文件,文件名中可以​​有空格?

2 个答案:

答案 0 :(得分:1)

file_get_contents()手册页:

  

注意:如果您要打开URI   特殊字符,例如空格,   你需要用URI编码URI   urlencode()

(修改:使用rawurlencode()将空格转换为%20而不是+

因此,在使用之前需要rawurlencode()文件名:

$file = rawurlencode('whatever.zip');

答案 1 :(得分:0)

我用字符串替换删除了文件名中的空格,现在它可以工作:

$file = str_replace(" ","%20",$file);