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);

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2011/01/20 19:25:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:Galapagos No.1

回答回数963ベストアンサー獲得回数89

ポイント60pt

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

ご確認ください。

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);
    }
}
id:pikab1

はい、問題ありません。

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

お騒がせしました。

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

2011/01/14 10:37:07

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません