【问题标题】:Zend Framework 2 file downloadZend Framework 2 文件下载
【发布时间】:2013-04-12 03:08:42
【问题描述】:

我制作了一个表格,使用Zend\Filter\File\RenameUpload 过滤器将文件上传到文件夹./data/uploads

这就像一个魅力。我现在的问题是如何将这个文件提供给用户下载?

我想应该是这样的:

$response->setContent(file_get_contents('./data/uploads/file.png'));

但我想知道最好的方法是什么。

【问题讨论】:

标签: php zend-framework2 download


【解决方案1】:

对于遇到此线程寻找答案的任何人,这是一个有效的解决方案,它正在使用流!

public function downloadAction() {
    $fileName = 'somefile';

    $response = new \Zend\Http\Response\Stream();
    $response->setStream(fopen($fileName, 'r'));
    $response->setStatusCode(200);

    $headers = new \Zend\Http\Headers();
    $headers->addHeaderLine('Content-Type', 'whatever your content type is')
            ->addHeaderLine('Content-Disposition', 'attachment; filename="' . $fileName . '"')
            ->addHeaderLine('Content-Length', filesize($fileName));

    $response->setHeaders($headers);
    return $response;
}

在这里找到: force download using zf2

更多细节在这里: sending stream responses with zend

【讨论】:

    【解决方案2】:

    感谢@henrik 的回复,但他的回答中缺少几个重要的标题。小心那个。

    完整的标题堆栈:

    public function downloadAction() {
        $file = 'path/to/file';
        $response = new \Zend\Http\Response\Stream();
        $response->setStream(fopen($file, 'r'));
        $response->setStatusCode(200);
        $response->setStreamName(basename($file));
        $headers = new \Zend\Http\Headers();
        $headers->addHeaders(array(
            'Content-Disposition' => 'attachment; filename="' . basename($file) .'"',
            'Content-Type' => 'application/octet-stream',
            'Content-Length' => filesize($file),
            'Expires' => '@0', // @0, because zf2 parses date as string to \DateTime() object
            'Cache-Control' => 'must-revalidate',
            'Pragma' => 'public'
        ));
        $response->setHeaders($headers);
        return $response;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多