我们正在发送一个 zip 文件下载作为响应,如下所示:
$this->response->file( "/export/stuff.zip", array('downlaod'=>true, 'name'=>"stuff.zip") );
return $this->response;
这工作正常,但文件始终命名为export.zip
. 我们的name
选择似乎没有任何效果。我们也尝试过不使用 .zip 扩展名。这令人困惑,因为name
选项显示在此处,在文档中。
我们做错了什么?
更新: 我们发现看似随意的名称“export”是从控制器操作的名称中复制而来的。我们将方法名称更改为“admin_exportt”,然后每次都会得到 exportt.zip。这在我见过的任何地方都没有记录。
我们发现在源代码中处理名称的位置 (/lib/Cake/Nework/CakeResponse.php:1254) 并且它似乎应该使用原始文件名,或者在name
选项中指定的任何内容:
if (is_null($options['name'])) {
$name = $file->name;
} else {
$name = $options['name'];
}