0

我最近将我的网站从 CakePHP 1.1 迁移到 1.3。

我现在正在使用媒体视图下载文件,但是,我遇到了一个大问题。

当我通过媒体视图下载 zip 文件并尝试解压缩时,Windows 声称该文件为空。如果我尝试预览它,它说它是无效的。

  • 文件大小正确,与服务器上的大小相同
  • 我可以通过 FTP 从服务器下载完全相同的文件,这是正确的
  • 我可以通过媒体视图下载 pdf 文件,并且 IT 工作正常(但 ZIP 文件不能)

这是我的控制器代码:

        $this->view = 'Media';
    $downloadparams = array(
          'id' => 'junkstuff'.'.zip',
          'name' => 'junk3',
          'download' => true,
          'extension' => 'zip',  // must be lower case
          'path' => APP . 'tmp/files' . DS   // don't forget terminal 'DS'
     );
   $this->set($downloadparams);

同样,如果我更改为 pdf 文件,并将“扩展名”更改为“pdf”,则一切正常。调试设置为 0。
我的代码使用直接来自 1.3 Cakebook: http ://book.cakephp.org/1.3/en/The-Manual/Developing-with-CakePHP/Views.html

有趣的是,他们在 cakebook 中以 zip 为例....

我可能做错了什么?

作为参考,这个线程似乎是完全相同的问题,但它也没有答案: 使用 winrar 打开时,通过 Cakephp MediaViews 获得的 Zip 文件报告 Unexpected end of archive

4

2 回答 2

0

您的内容类型可能是错误的(在不使用响应类时会发生这种情况 - 当然在 1.3 中您不能这样做):

Content-Type    application/octet-stream

应该更好

Content-Type    application/x-compressed

内容长度也可能有用。您可以尝试使用手动添加这些标题header()

于 2013-08-29T23:45:32.963 回答
0

事实证明,当我将站点放在实时服务器上时(它在服务器上,但我的“测试”服务器上),这个问题自行解决了。我唯一能想到的是,某处有一个引用或安全检查引用了官方站点名称。我的测试站点有不同的站点地址。

这是一个猜测。我真的不确定它自己修复了什么。但我没有更改代码,它开始在现场工作。

于 2013-09-04T01:42:19.943 回答