『PHP : 選択した画像の表示 / ファイルアップロード ver.2』 よりアップグレードします。
$.ajax と FormData オブジェクト を使用して画像をアップロードします。よって、HTML の FORM での送信は必要なくなります( HTML の入力チェックは必要時に使用する仕様なのでので FORM の記述は必要です )
✅ control.php
コントローラ
✅ model.php
このバージョンでは使用しません
✅ view.php
画面定義
✅ client.js
FileReader オブジェクトを使用した、画像表示
※ 複数選択が可能になっています
✅ upload.js
$.ajax と FormData オブジェクト
✅ uplaod.php
move_uploaded_file でアップロードされたファイルを保存するのが主な役割です。
( 結果は JSON フォーマットで $.ajax に返します )
control.php
$image_path は upload.php で使用するので、そちらへ移動しています。
( $result_message ももう使用しません )
model.php
ここは、もう使用しません( 標準化の為、model.php を削除する事はありません )
view.php
選択するファイルを画像限定にする為に、type="file" の INPUT 要素の属性に accept=".png,.jpg,.jpeg,.gif" を追加しています。また、アップロードを $.ajax で行うので FORM の enctype="multipart/form-data" は削除しています。
client.js
この部分は、ver.2 では選択は1つだけでしたが、今回は複数選択が可能になっています( クリアのタイミングが違うだけです )。
$("#image").html(""); による画像クリアをここで実行していません。画像のクリアは、upload.js の #.ajax の正常終了時のイベントの最後で行っています。
upload.js
$.ajax と FormData オブジェクトの処理です。但し、アップロードするデータは type="file" を持つ INPUT 要素で作成されるファイルオブジェクトでは無く、FileReader オブジェクトで作成された base64 の文字列を持つ画像を使用します。
upload.php
サーバ側でファイルアップロードを担当する upload.php は、返すデータは JSON フォーマットであり、MIME は application/json です。これによって、$.ajax は直接 JSON オブジェクトを返す事になります。