質問: false; // $this->response->type($user->user_file_type); // $this->response->file($user->user_file); //ここの引数をどうしたらよいかで詰まっています。 // $this->response->download($user->user_file); //ここの引数をどうしたらよいかで詰まっています。 header('Content-type: ' . $user['user_file_type']); header('Content-length: ' . $user['user_file_size']); header('Content-Disposition: attachment; filename="'.$user['user_file_name'].'"'); echo $user['user_file']; } ``` MySQLの定義は下記の通りになります。 | user_file_type | user_file_name | user_file_size | user_file | | --- | --- | --- | --- | | VARCHAR(255) | VARCHAR(255) | int(11) | MEDIUMBLOB | | ExcelやWordなどファイル形式は指定せず、ファイルタイプがセットされる。 | ファイル名がセットされる。 | ファイルのサイズがセットされる | ファイルそのものがバイナリでセットされる。 | user_file_typeの例)application/vnd.openxmlformats-officedocument.spreadsheetml.sheet ご回答お願い致します。 **追記・変更** --------- Controllerをソースの通り、 headerをセットして、echoでファイルを指定するように変更したところ、 DBのファイル名でダウンロードされるようにはなったのですが、 中身がすべて「Resource id #000」となってしまいます。 BLOBに格納したデータが正しくダウンロードする方法をご存知の方がいらっしゃいましたらご回答お願い致します。
回答: 自己解決しましたので、解決方法を記載します。 echo $user['user_file']; ↓ $file=stream_get_contents($user['user_file']); echo $file; $user['user_file']だけではResouce IDを保持しているだけでbinaryデータをstream_get_contents()で取得する必要がある。 という風に理解しました。