CakePHP始めたばかりです。
会員登録画面のようなものを作っています。
会員情報を入力し、確認ボタンを押すと確認画面に遷移します。
その確認画面で、入力画面で指定した画像ファイルを表示したいのですが、
webroot/imgではURL直打ちされると見えてしまうので、
webroot以外に保存しました。
アップロード画像の保存まではうまくいったのですが、
$html->image('/system/image/', . $this->data['User']['image'])
としても画像が表示されません。
$this->data['User']['image']にはabc.jpgなどと入っています。
IE上で画像が×になっているところのプロパティをみると、
画像のパスは合っているようです。
試しにwebroot配下に置くバージョンを作ってみたら表示されました。
webroot以外に配置した画像を読み込むにはどうしたら良いのでしょうか。
CakeでなくてもPHPでいいので、教えてください。
No.5ベストアンサー
- 回答日時:
> ここではimgタグを使わずに、imagejpegメソッドで表示しています。
深く考えすぎ。思考が迷走してます。
普通に考えてみましょう。
普通にwebroot/imgにイメージを置いてブラウザでアクセスしたら画像が表示されますよね?
このとき貴方は何かHTMLを書きましたか?ブラウザで直接画像にアクセスしたのだから当然HTMLは書いてませんよね?
これふまえて、
http://phpspot.net/php/man/php/function.imagejpe …
に書いてあるコードをcakeに移植してみて下さい。
んで、そのコントローラ/アクションにブラウザで直接アクセスしたら画像が表示されませんか?
ここまで来たらCTPでIMGを表示する方法を思い出して下さい。
<img src="イメージへのPATH" />
にコントローラ/アクションのURLを当てはめれば良いんですよ。ブラウザでアクセスして画像が表示できるのだから何も問題ない。
4さんの言う通り、まずはコントローラ/アクションの方式できちんと画像が表示するところから解決すべきかな。
この回答への補足
できました!!
contorollerの指定なしで、actionだけ指定しました。
<img src ="<?php echo $html->url('imageDisp'); ?>">
が、しかし自分の書いたものは表示されませんでした。
根本的なミス、画像のパスが違うとかなのでしょうね…
function imageDisp(){
header( "Content-type: image/jpeg" );
readfile('/system/photo/image/test.jpg');
}
そのままコピペさせていただきましたが、
こんな感じでやったのですが、
画像が表示されませんでした。
IEですと×表示になっています。
view側で contoroller/actionと書いていますが、
action側にいってないようです。
-----view側----
<img src ="<?php echo $html->url('users/imageDisp'); ?>">
----controller側----
function imageDisp(){
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color);
header('Content-Type: image/jpeg');
imagejpeg($im);
imagedestroy($im);
}
No.6
- 回答日時:
> function imageDisp(){
一番のアヤシイのはメソッド名。
これusersコントローラの中のメソッドなんですよね?
/app/views/users/ 以下のファイルを全て列挙して下さい。そしたら答えが分かります。
お付き合いありがとうございました。
これを
<img src ="<?php echo $html->url('users/imageDisp'); ?>">
このようにしたら、できました。
<img src ="<?php echo $html->url('imageDisp'); ?>">
どうしてもっと早く気がつかなかったのか…
大変勉強になりました。
No.4
- 回答日時:
できないはずがありません。
実際、私自身Cakeでシステム構築時にプログラム経由で画像出力してますので。
まず、画像出力用のプログラムを直接叩いた場合にどうなるか確認した方がいいと思います。
その上で画像が出力されないなら、画像のパスが合っているのかとか正しいヘッダーが出力されているのかとか、一つずつ確認してみてください。
ちなみに画像出力時に「Content-type: image/jpeg」だけでは不十分です。
No.3
- 回答日時:
下のお二方の回答をあわせると、それが答えになります。
1,HTML側におけるIMGの表示は<IMG>タグ
落ち着いてよく考えましょう。
HTMLなのだから普通にIMGタグを使います。echo $image;などしても出ません。
<img src="イメージへのPATH" />
2,イメージへのPATHに$this->Html->urlでURLを指定
そのURLで起動するコントローラのアクションにヘッダを付けてイメージを出力するコードを書いたら良いんです。
それこそ2さんのおっしゃる通り「php 画像 出力」で調べたらいくらでも出てきます。
ありがとうございます。
もちろん調べていますし、「php 画像 出力」でも検索してみました。
http://phpspot.net/php/man/php/function.imagejpe …
ここではimgタグを使わずに、imagejpegメソッドで表示しています。
http://detail.chiebukuro.yahoo.co.jp/qa/question …
ここでもimgタグを使わずに、freadで表示しています。
webroot以外の画像なのでimgタグは使えないと思い、他の方法を探していました。
imagejpegやfreadでは出来ないということでしょうか。
No.2
- 回答日時:
そのままファイル内容を出力するだけでは画像を表示することはできません。
画像ファイル出力前に、画像ファイル出力用のヘッダーを出力する必要があります。
詳しくは「php 画像 出力」などのキーワードで検索してみてください。
しっかりつくるなら「ETag」についても調べてみるといいと思います。
ありがとうございます。
header('Content-type: image/jpeg');
↑これですよね?
この画像の出力の前にechoでテキストを出力しているため、
実行ファイルパス名で壊れていますと表示されてしまうのです。
1枚のページに画像のみだといけるのかもしれませんが…
テーブルのあるセルの一部に画像を表示させようとしていますので、
headerが使えないようです。
No.1
- 回答日時:
> $html->image('/system/image/', . $this->data['User']['image'])
これはimgタグを出力するだけなので、webroot以外に置いているのにその画像のパスを直接指定しても見えるわけがありません。
webroot以外に配置した画像を出力するには、画像出力用のプログラムを用意してそのプログラムを指定するようにしましょう。
ありがとうございます。
imageタグで表示できないことがわかり、調べて書いてみたのですが、
画像をテキスト表示したような表示が出力され、
画像が表示できませんでした。
$file = '/photo/test.jpg';
$fp = fopen($file, "rb");
pr(filesize($file));
$image = '';
while(!feof($fp)){
$image .= fread($fp, 8192);
}
echo $image;
fclose($fp);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- Windows 8 Route Generator の使い方 1 2023/05/03 00:36
- HTML・CSS ブロックエディターで作りつつ、画像を挿入しつつ、画像にスタイルシートのコードを付ける方法はありますか 1 2022/08/23 18:46
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP php 確認表示画面で値をSESSIONから取り出す理由の解釈は正しいでしょうか? 1 2023/06/09 17:39
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSV出力にHTMLが入ってしまう
-
PHPSpreadsheetによる書き出し...
-
JSON_UNESCAPED_UNICODEをつけ...
-
PHPで`headers already sent`と...
-
xml_parseで実体参照が無視される
-
パスワード認証後次のページに...
-
PHPで他のページへジャンプ...
-
PHPのif文でその処理を途中で抜...
-
透過PNGが透過されない!!
-
3つ以上の論理積は利用可能なの...
-
Subversionのリポジトリの削除
-
php文字列中のシングルクオート...
-
【file_exists】ファイルが存在...
-
CFileDialogの最初のディレクト...
-
リンク先を隠す方法はないでし...
-
VBでメールを送る時のSMT...
-
powershell で書いたプログラム...
-
php,mysqlにて画像パス保存/表...
-
Prompt入力値をphp変数として取...
-
Localeクラスについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSV出力にHTMLが入ってしまう
-
PHPにおける時間計算、時間足し...
-
エクスプローラーでフォルダを...
-
image関数でMS Pゴシックを使い...
-
PHPで表示したテーブル内容をCS...
-
imgタグでのphpの呼び出しについて
-
phpexcelにてsubmitボタンを押...
-
論理演算 NAND に関しての質問
-
phpにcssを適応させたい...
-
¥マークを出力したいがバック...
-
webroot以外の画像の表示
-
PHPで`headers already sent`と...
-
PHPSpreadsheetによる書き出し...
-
phpで数字の値を画像で表示した...
-
warningを画面に表示させない設...
-
phpで別の場所にある画像への相...
-
exit exit(); 言語構造
-
PCからアクセスした場合、ソー...
-
PHPで動的に生成した画像がキャ...
-
ob_end_clean と ob_clean の違...
おすすめ情報