AjaxでファイルをアップロードするjQueryプラグイン「jQuery.upload」
AjaxでファイルをアップロードするjQueryプラグイン「jQuery.upload」を紹介します。
1.機能
フォームのファイルアップロード実行に「jQuery.upload」プラグインを利用することで、Ajaxによるファイルのアップロードが行えるようになります。
以下のサンプルでお試しください。
2.プラグインのダウンロード
jQuery.uploadのダウンロードページにある、「jQuery.upload 1.0.2 (Minified)」または「jQuery.upload 1.0.2」を右クリックして「名前をつけて保存」を選択(バージョン1.0.2は2012年8月現在のもの)。
「jquery.upload-1.0.2.min.js」や「jquery.upload-1.0.2.js」といったファイル名で保存します。
3.プラグインの設定
クライアントのHTMLマークアップとjQueryのコードは次のようになります。
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="jquery.upload-1.0.2.min.js" type="text/javascript"></script>
<script>
$(function(){
$('input[type=button]').click(function() {
$('input[type=file]').upload('http://user-domain/upload.php', function(res) {
alert('ファイルをアップロードしました:' + res.filename);
}, 'json');
});
});
</script>
<input type="file" name="upload" />
<input type="button" value="アップロード" />
upload()のフォーマットは次の通りです。
upload(url, callback, type);
第1パラメータにはアップロード時に実行するサーバのURL、第2パラメータはレスポンス用のコールバック関数、第3パラメータにはレスポンスデータの形式を指定します。
下はサーバ(PHP)のサンプルコードです。
$filename = basename($_FILES['upload']['name']);
if (move_uploaded_file($_FILES['upload']['tmp_name'], '/home/www/foo/images/' . $filename)) {
$data = array('filename' => $filename);
} else {
$data = array('error' => 'Failed to save');
}
header('Content-type: text/html');
echo json_encode($data);
basename()はアップロードしたファイルのファイル名を取得します。move_uploaded_file()は、第1パラーメータで指定したファイルを第2パラメータのパスに保存します。
サンプルの第1パラメータ「$_FILES['upload']['tmp_name']」は、フォームデータを指定しています。input要素のname属性値「upload」を指定します。「tmp_name」はファイルデータを取得する場合の値になります。
JSONデータを返却することで、クライアントに情報をわたすことができます。
- Ajaxのページ遷移でURLが変更できるjQueryプラグイン「PJAX」
- jQueryでページ分割ができる「SimplePaginationプラグイン」
- jQueryでスクロールでトップに「戻る」リンクを表示する「PageTop」プラグイン
- jQueryでテーブル幅を変更できる「jQuery Resizable Columnsプラグイン」
- jQueryで目次を自動生成する「tocプラグイン」
- jQuery.pjaxとjQuery.bottomを使ってSEO対策つきの無限スクロールを実装する
- jQueryでサイドメニューに現在のセクション要素を表示する「DisplaySectionプラグイン」
- jQueryでヘッダーに現在の見出し要素を表示する「DisplayHeadingプラグイン」
- JSONデータをHTMLにマッピングできるjQueryプラグイン「JSON2HTML」
- ローディング画面を簡単に表示できるjQueryプラグイン「BlockUI」
- スクロールしたときにおすすめ記事を右下からにゅるっと表示させるjQuery「RecommendFooterプラグイン」
- jQuery UI Tabsのタブ切替でブラウザの「戻る」「進む」を有効にする方法
- jQueryのAjaxやタブ切替などでブラウザの「戻る」「進む」が有効になる「hashchangeプラグイン」(実装解説つき)
- jQueryでcookieを簡単に使える「jQuery Cookie」のまとめ
- jQuery.uploadプラグインで親要素のonsubmitを起動させない対処