前回の続き。アップロードフォームで画像を選択すると、横に選択画像を表示するようにした。
成果物:upload.html (画像ファイルの選択でプレビューを表示)
メモ
- ファイル選択ボタン(input type=”file”)のchangeイベントがトリガー
- ファイルオブジェクトはdocument.getElementById(“image”).files[0]で取得できるが、jQueryなら$(‘#image’).prop(‘files’)[0]と書ける
-
$('#image').change(function() { var file = $(this).prop('files')[0]; var fr = new FileReader(); fr.onload = function() { $('#preview').attr('src', fr.result); // 読み込んだ画像データをsrcにセット } fr.readAsDataURL(file); // 画像読み込み });
ソースコード
upload.html
<!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="UTF-8"> <title>スマホキャプチャーギャラリー</title> </head> <body> <a href="index.html">Home</a> | <a href="upload.html">アップロード</a> | <a href="ranking.html">人気順</a> | <a href="latest.html">新着順</a> <p>アップロード画面[upload.html]:フォーム(プレビュー欲しい)、エラーチェック(必須項目、ファイル形式、ファイルサイズ、コメント上限)</p> <form action="upload.php" method="post" enctype="multipart/form-data"> <table> <tr height="480"> <td> <img src="dummycapture_320x480.png" id="preview" alt="preview" width="320" /> </td> <td> <table> <tr> <td>画像:<input type="file" name="image" id="image" /></td> </tr> <tr> <td>名前:<input type="text" name="name" size="40" /></td> </tr> <tr> <td>OS:<select name="os"> <option value="default">選択してください</option> <option value="iPhone">iPhone</option> <option value="Android">Android</option> </select></td> </tr> <tr> <td>コメント:<textarea id="" name="comment" rows="10" cols="30"></textarea></td> </tr> <tr> <td>編集・削除キー:<input type="text" id="updelkey" name="updelkey" size="20" /></td> </tr> <tr> <td><input type="submit" value="送信" /></td> </tr> </table> </td> </tr> </table> </form> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { // 編集・削除キーのデフォルト値 var key = Math.floor(Math.random() * 9999); $('#updelkey').attr('value', key); // 画像プレビュー $('#image').change(function() { var file = $(this).prop('files')[0]; var fr = new FileReader(); fr.onload = function() { $('#preview').attr('src', fr.result); // 読み込んだ画像データをsrcにセット } fr.readAsDataURL(file); // 画像読み込み }); }); </script> </body> </html>
参考サイト
- html5の File API を使って、アップロード無しで画像プレビュー – 超自己満足プログラミング
- jQuery で HTML5 FilesAPI ファイルオブジェクトのプロパティにアクセスするには | MT Systems
パーフェクトJavaScript (PERFECT SERIES 4)
posted with amazlet at 13.02.07
井上 誠一郎 土江 拓郎 浜辺 将太
技術評論社
売り上げランキング: 60,832
技術評論社
売り上げランキング: 60,832
パーフェクトPHP (PERFECT SERIES 3)
posted with amazlet at 13.01.30
小川 雄大 柄沢 聡太郎 橋口 誠
技術評論社
売り上げランキング: 24,082
技術評論社
売り上げランキング: 24,082
関連エントリーはありません