どうも、はむばねです。
世間一般はシルバーウィークらしいですね。
まぁ、もう私には関係のない事ですが。
毎週がゴールデンウィークみたいなもんですからね。
なんだったら、街に人が溢れすぎてウザいので極力引きこもろうという悲壮な決意まである。

しかし、5連休ですか。
シルバーウィークって、そんなに長いもんでしたっけ?
シルバーウィークとか言い出した初年度(?)は結構長かった記憶がありますが、勤めてた時にそんなに休んだ記憶があまりない。
単に記憶が飛んでるだけかもしれませんが。
というか勤めてた頃の私だったら、「週間で回してるタスクが回んなくなるからこんなに休み作るんじゃねーYO!」と社畜めいたことを言いそう。
というか何回か言った記憶がある。


さて、それはそうとタイトルの件です。
PHPでですね、アップロードされた画像ファイルを表示させたいのですよ。
サーバ上に画像を保存する前に、確認画面で出す形で。
でまぁ最も単純に考えると一端一時保存領域に保存して確認画面ではそれを出して、アップロードが確定したら本チャンの保存場所に移動させるって形なんでしょうけれど。
キャンセルをhistory.back()で実装してるんで、キャンセル時に処理を噛ませる事ができないんですよね。
別に、普通にキャンセルの処理をPHP側で実装してもいいっちゃいいんですけど。
あとhistory.back()を使うにせよ、それならそれで一時ファイルのファイル名を一意になるように設定して、定期的に古いファイルをクリーニングすることで対応はできるのですが……。
どっちにしろ、めんどいじゃないですか。
とかとか考えて、最終的にセッションにデータを保存する以下の方法に辿り着きまして。

【元のphpファイル】
//セッション開始
session_start();
//セッションにデータを保存
$_SESSION['img'] = file_get_contents($_FILES["profileImg"]["tmp_name"]);
//imgのsrcで別ファイルtmpImg.phpを呼び出す
print '〈img src="tmpImg.php"〉';

【tmpImg.php】
//セッション開始
session_start();
//コンテキストタイプ送信
header('Content-type: image/jpeg');
//セッションに保存された画像を表示
print $_SESSION['img'];


これで、一応意図する通りに動作はしたのですけれど。
……うん。
ホントにこれがベストな形なわけなの?
こんな要件山程あると思うのですが(実際ググると山程出てくる)、みんなこんな方法もしくは一時ファイルで対応してんの?
いやまぁさほど複雑でも冗長でもないですけれど、なーんか若干の力技感が漂うんだよなー。
別ファイルを用意するってところが引っかかってるのかな……。

結局header入れるとページ遷移しちゃうから別ファイルに分けてるわけなのですけれど、もうちょっと上手いこと画像ファイルであることをブラウザに教える方法はないのかしら?
もしくは、ページ遷移しない方法?


うーむ、恐らくは基本的な所がわかってないせいでなんかモヤモヤするな。
というわけで、誰かこれについて解説してくれてもえぇんやで?
もっとも、こういう系の記事書いて解説貰った記憶はほぼねーんだけどな!
私は、「ライトノベル作家のブログ」に何を書いているのか。
まぁ、ライトノベル作家のブログらしい記事がこれまでの約10年でいくつあるのかって話ではありますが。