スクウェア・エニックスノベルス『スタンプ・デッド』1~5巻&コミック版(完結)、『太陽で台風』1・2巻(完結)発売中!
ガンガンノベルズ『魔法少女アーヤ☆アミー』発売中!
徳間デュアル文庫『魔王さんちの勇者さま』1~4巻(完結)発売中!
徳間文庫『欠陥妖怪住宅』、『パラレル家族計画』発売中!
ぽにきゃんBOOKSライトノベルシリーズ『ブチ切れ勇者の世界征服』1~2巻発売中!

2017年4月、第11回HJ文庫大賞にて『銀賞』をいただきました!
2017年5月、ジャンプ小説新人賞’16 Winterにて 小説フリー部門『銀賞』受賞をいただきました!
2017年9月、第30回ファンタジア大賞にて 『金賞』をいただきました!

第11回HJ文庫大賞"銀賞"受賞作『カンスト勇者の超魔教導 ~将来有望な魔王と姫を弟子にしてみた~』
1・2巻、HJ文庫より発売中!
第30回ファンタジア大賞 "金賞"受賞作『お助けキャラに彼女がいるわけないじゃないですか』
2巻、5/19(土)ファンタジア文庫より発売です!

2018-06

«  | ホーム |  »

PHPに自信ニキちょっと来てくれ

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

しかし、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年でいくつあるのかって話ではありますが。
スポンサーサイト

コメント

1. 力技感に同意ゆえ

はじめまして、ではないのですが、前回のコメントが数年前で、その時の名前と同じか自信がないので、まぁそういう感じです。

えーと、PHPにそこまで詳しいわけではないですが、どうにも気になったので少しだけ調べた結果、「Data URI scheme」というのを見付けました。
画像ファイルをBase64変換して頭にいろいろくっつけたテキストを、imgタグのsrcに突っ込むと画像として表示してくれるとのことで、JSのFile APIで変換できるのですごく使えそうです(雑)。

中途半端な情報ですが、参考になれば。

2. れすぽんす

>ほしるち=txaさん
おぉぉぉぉぉぉ! 情報ありがとうございます!
なるほど、Data URI schemeですか……。
MIMEタイプ含めて指定するから、headerを使う必要がなくなり1ファイルで収まる……の、かな……?
ちょっと、明日実際試してみます!
わざわざ調べてまでいただき、どうもありがとうございました!

コメントの投稿


管理者にだけ表示を許可する

トラックバック

http://hamubane.blog.fc2.com/tb.php/4137-ad2ffc0c
この記事にトラックバックする(FC2ブログユーザー)

«  | ホーム |  »

プロフィール

hamubane

Author:hamubane

たぶんライトノベル作家的なもの


Twitter

既刊情報

上の方は絶版じゃないよ!

お助けキャラに彼女がいるわけないじゃないですか2 (ファンタジア文庫)

最新コメント

最新記事

カレンダー

05 | 2018/06 | 07
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

月別アーカイブ

カテゴリ

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

ブロとも申請フォーム

この人とブロともになる

QRコード

QR