首页 > 解决方案 > 通过zend rest下载的文件已损坏

问题描述

我想通过 zend 框架下载一个 zip 文件。为此,我构建了以下代码片段:

function fetchAll($params = []) {
  $file = __DIR__ . '/../../../../htdocs/_downloads/test.zip';
  $response = new Stream();
  $response->setStream(fopen($file, 'rb'));
  $response->setStatusCode(200);
  $response->setStreamName(basename($file));
  $headers = new Headers();
  $headers->addHeaders([
    'Content-Disposition' => 'attachment; filename="' . basename($file) . '"',
    'Content-Type' => 'application/octet-stream',
    'Content-Length' => filesize($file)
  ]);
  $response->setHeaders($headers);
  return $response;
}

上面的代码是休息资源的一部分。

现在我下载了两次文件:一次使用 WinSCP,一次使用我的 REST API。我得到的文件在我的磁盘上具有完全相同的大小(1,390,687 字节)。问题是我可以打开 WinSCP 下载的 zip 文件,但无法打开通过 REST 下载的文件。错误消息说文件已损坏。

标签: phpzend-framework

解决方案


推荐阅读