人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

CakePHPで困っています。

メディアビューで、画像をクライアントに返そうと思い、仕様通りに記述したのですが、ブラウザで確認した所、画面が真っ白になって何も起きませんでした。
・filesというディレクトリはapp直下になります。
・ブラウザから直で
http://domain/dir_name/controller_name/download
とアクセスしました。

何か少しでも情報をお持ちの方ご教授願いますm(_ _)m

ソースは以下になります。

function download() {

$filename = 'test.png'; // とりあえず固定値
$name = 'test';

// 拡張子を取得する。
$pos = strrpos($filename,'.');
$ext = substr($filename, $pos + 1);

$this->view = 'Media';
$params = array(
'id' => $filename,
'name' => $name,
'download' => true,
'extension' => $ext,
'path' => 'files' . DS
);
$this->set($params);
}

【追記】

メディアビューを使わず記述したら出力する事が出来ましたが、
ファイルが破損していて表示できませんでした。
最悪、メディアビューなしで出力できればいいのですが…。

$filename = 'test.png'; // とりあえず固定値
$path= 'files' . DS;

header('Content-Disposition: attachment; filename='.$filename);
header('Content-Length: '.filesize($path));
header('Content-Type: application/octet-stream');
readfile($path);

●質問者: ピ
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:application CakePHP Download ds name
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Galapagos
●60ポイント

下記のようにメディアビュークラスを使用するようにしていますか?

ご確認ください。

class HogeController extends AppController {
 function download() {
 $filename = 'test.png'; // とりあえず固定値
 $name = 'test';
 // 拡張子を取得する。
 $pos = strrpos($filename, '.');
 $ext = substr($filename, $pos + 1);
 $this->view = 'Media';
 $params = array(
 'id' => $filename,
 'name' => $name,
 'download' => true,
 'extension' => $ext,
 'path' => 'files' . DS
 );
 $this->set($params);
 }
}
◎質問者からの返答

はい、問題ありません。

追記として書いたphpのソースはパスが違うだけでした。

お騒がせしました。

ただ、cakePHPでの出力に関してはいまだ解決しておりません。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ