次のような応答として、zip ファイルのダウンロードを送信しています。
$this->response->file( "/export/stuff.zip", array('downlaod'=>true, 'name'=>"stuff.zip") );
return $this->response;
これは問題なく動作しますが、ファイルの名前は常にexport.zip
. 私たちのname
オプションは何の効果もないようです。また、.zip 拡張子なしで試しました。name
オプションはドキュメントのhereに示されているため、これは紛らわしいです。
私たちは何を間違っていますか?
更新: 一見恣意的な名前 "export" が、コントローラー アクションの名前からコピーされていることがわかりました。メソッド名を「admin_exportt」に変更すると、毎回 exportt.zip が取得されます。これは、私が見たどこにも文書化されていません。
ソース コード (/lib/Cake/Nework/CakeResponse.php:1254) で名前が処理されている場所を見つけましたが、元のファイル名を使用するか、name
オプションで指定されたものを使用する必要があるようです。
if (is_null($options['name'])) {
$name = $file->name;
} else {
$name = $options['name'];
}