• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:画面遷移させずに、選択画像ファイルを渡す方法)

画面遷移せずに選択画像ファイルを渡す方法

このQ&Aのポイント
  • PHPスクリプトで選択したファイルをbbs.phpで受け取る方法について教えてください。
  • GET渡し以外の方法も教えていただきたいです。
  • ファイルのアップロードに失敗した場合も処理方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • _nayutax
  • ベストアンサー率75% (3/4)
回答No.3

ご提示のプログラムに、肝心のjavascriptによるアップロード部分がか書かれていませんが、 AJaxによるファイルアップロードは予想以上に大変です。 HTML5対応ブラウザであれば、FormDataオブジェクトが使えるので比較的簡単に送信できます。 http://molaovo.hatenablog.jp/entry/20130111/1357913239 しかしIE8以下のような「旧タイプ」ブラウザは内部でiFrameなどを生成して送信する仕組みを作り込まなければいけません。Flashを使う場合もあります。 クロスブラウザ判定などもあるので、普通はjQueryによるファイルアップロード用プラグインを使います。サーバサイドはそのまま使用できますし、アップロード後の画像表示も自由です。 ttp://webchoko-tips.com/2014/01/jquery-fileupload-summary/

beterugius
質問者

お礼

詳しいご指導、どうもありがとうございました。 AJAXにつきましては、これから勉強しようと思っております。

その他の回答 (2)

  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.2

とりあえず、$filenameに送信されてきたファイル名をそのまま使うのは危ない。とくにバイナリー文字やディレクトリー区切り文字が混入してないかのチェックは重要 file_upload.php 側で、 $filename に何が入ってるかの確認するのが先のような気がします。 ブラウザによっては、送信してこないかも?

beterugius
質問者

お礼

ご回答いただき、ありがとうございました。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

ちょっと特殊な処理なので実際には試していませんが 遷移なしで画像を送るならajaxですよね? で、DBと連携しているので戻り値にIDを返してもらえば <img src="loadimage.php?id=xxx">的な呼び出しをすればいいでしょう またサーバー上においておくファイル名も文字コードに依存しない 英数文字のみのものに付け替えることをお勧めします。 (面倒ならidとなる数値と同値でもいいでしょう) ファイル名でマッチングする処理は、インターネット経由では 通用しない場合も多々あるのでやめたほうがいいと思います

beterugius
質問者

お礼

ご指導、ありがとうございました。

beterugius
質問者

補足

【file_upload.php】 <?php $upload_dir = './files/'; $filename = $_FILES['sendfile']['name']; if(move_uploaded_file($_FILES['sendfile']['tmp_name'], $upload_dir.$filename)){ echo '<img src="bbs_test.php?photo=$filename">'; ← 利用させていただきました。   } ?> <script type="text/javascript"><!-- var container = parent.document.getElementById('container'); image = parent.document.createElement('img'); image.src = './<?php print($filename);?>'; container.appendChild(image); //--></script> 【bbs_test.php】 function regist_database(){ ~中略~ $photo = $_GET['photo']; // 添付画像ファイル名   var_dump($photo); ←ここで、ダンプ値がNULL return $photo; } --------------------------------------------------- 上記のように、yambe.jpさんがおっしゃってるように、 イメージタグにクエリーをくっつけて、GET渡ししたのですが、やはり、bbs_test.php側で、$photoの値がNULLなのですが、どうしてなのでしょうか。ご指導お願いできますか?