TopJavaScriptjQueryプラグイン > 2012年8月
2012年8月31日

AjaxでファイルをアップロードするjQueryプラグイン「jQuery.upload」

August 31,2012 12:55 AM
Tag:[, ]
Permalink

AjaxでファイルをアップロードするjQueryプラグイン「jQuery.upload」を紹介します。

jQuery.upload
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

「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データを返却することで、クライアントに情報をわたすことができます。

Comments [0] | Trackbacks [0]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

AMN
Categories
Monthly Archives
2020年
2019年
2018年
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3