我最近将我的网站从CakePHP 1.1迁移到1.3。
我现在使用媒体视图下载文件,但是,我遇到了一个主要问题。
当我通过媒体视图下载zip文件并尝试解压缩时,Windows声称该文件为空。如果我尝试预览它,它说它无效。
这是我的控制器代码:
$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
有趣的是,他们使用zip作为蛋糕书中的一个例子......
我可能做错了什么?
作为参考,这个帖子似乎是完全相同的问题,但它也没有答案: when opened with winrar, Zip file obtained through Cakephp MediaViews reports Unexpected end of archive
答案 0 :(得分:0)
您的内容类型可能有误(在不使用响应类时会发生这种情况 - 当然,您无法在1.3中执行此操作):
Content-Type application/octet-stream
最好是
Content-Type application/x-compressed
内容长度也许有用。
您可以尝试使用header()
手动添加这些标头。
答案 1 :(得分:0)
事实证明,当我将网站放在实时服务器上时(它位于服务器上,而不是我的“测试”服务器),这个问题已经解决了。我唯一可以想到的是某个地方有一个参考或安全检查,引用了官方网站名称。我的测试网站有不同的网站地址。
这是猜测。我真的不确定它自己修复了什么。但我没有更改代码,它开始在现场工作。