Movable Type 備忘録

 

 jQuery でファイルアップロード( JqUploader )

こんばんわ^^

ソフトバンクの携帯が話題のようです。シャア専用携帯が明日で先行予約終了だそうです。

会社の人にもガンダム好きな人がいるのですが、もぅうるっさいったらありゃしないっ!!
シャア専用携帯じゃ、あなたは使えませんねっ!! って皮肉っても軽~く流されちゃいました。

そうとう気になってるようでして、どんな携帯なのかサイトを見てみてビックリ、すっごいコリようです Σ( ̄Д ̄;)!! ガンダム好きにはたまらないんでしょうね。メニューアイコンや待ちうけもシャア専用って書いてました。

そいえば、どっかでガンダム 30 周年ってのみかけたなぁ。だからソフトバンクとのコラボなのかな!?
声優さんが『ソフトバンクの携帯は化け物か!!』と言わされてました (; ̄∇ ̄A 大変ですね。

さて、今回は久しぶりに jQuery に関するご紹介です (●>∀<●)/
ホントはもっと前にいろいろ使ってみてたんだけど、気分が乗らなくってズルズルとご紹介が延びてしまいました (; ̄∇ ̄A はは

今回ご紹介するのは JqUploader です。
わたしのサイトのメールフォームにもファイルアップロード機能を付けてますが、実は Firefox 専用だったりします (; ̄∇ ̄A

けっこう手間隙かけて作ったものだったのですが、JqUploader は手間要らずでできちゃいます。 しかもフラッシュでアップロードされるので、プログレスバーによるアップロード状況も表示されます。けっこうカックいいです (●´∀`●)

JqUploader の説明

JqUploader の主なパラメータについてカンタンに説明します。

  • maxFileSize
    最大転送ファイルサイズを指定します。以下のように input タグで最大サイズを指定します。

    <input name="MAX_FILE_SIZE" value="51200" type="hidden" />
    

    上記は 50KB を上限としています。

  • width
    フラッシュ素材の横幅を指定します。デフォルトは 320px です。

  • height
    フラッシュ素材の高さを指定します。デフォルトは 85px です。

  • version
    表示可能なフラッシュプレイヤーのバージョンのようです。デフォルトは Ver 8 です。

  • background
    フラッシュの背景色です。

  • hideSubmit
    送信ボタンの表示/非表示を選択します。
    たとえば、ファイルのアップロードが必須なメールフォームの場合、ファイルのアップロード完了後、メール送信ボタンを表示してくれる機能です。

  • src
    フラッシュファイル( jqUploader.swf )のパスを指定します。
    デフォルトでは、JqUploader を読込んだ HTML と同じ場所( カレント )にあるものとされています。 フラッシュ表示してるファイル( demo.html )からの相対パスを指定します。

  • uploadScript
    サーバ側で実行されるアップロードスクリプトを指定します。
    デフォルトでは form タグの action 属性で指定したものが使用されます。

  • allowedExt
    ファイル選択時の、ファイルの拡張子を選択できます。
    デフォルトでは 「*.jpg; *.jpeg; *.png」になっています。

  • allowedExtDescr
    allowedExt パラメータで指定した拡張子の説明です。
    デフォルトでは「Images (*.jpg; *.jpeg; *.png)」になってます。

  • params
    フラッシュファイル( jqUploader.swf )へのパラメータです。

  • barcolor
    プログレスバーの前景色です。

  • startMessage
    input タグのラベルがなかった場合、「Please select a file」と表示されます。

  • validFileMessage
    アップロード完了時のメッセージを指定できます。
    デフォルトでは「now click Upload to proceed」です。

  • progressMessage
    アップロード中のメッセージのようです。
    デフォルトでは「Please wait, uploading」です。

  • endMessage
    アップロード完了後のメッセージです。
    デフォルトでは「You're all done」です。

以上が主な JqUploader のパラメータになります。これらのパラメータを必要に応じて設定します。

実際に JqUploader を使用する際の注意点

JqUploader の設置については特に説明するまでもないので省きます。
こちらから圧縮ファイルをダウンロードして各自の環境に合わせてアップロードするだけです。

ここでは jQuery 版メールフォーム設置した際に、注意すべきことを明記しておきます。

  • アップロード先ディレクトリについて
    ファイル転送後のアップロード先のディレクトリは、デフォルトでは flash_upload.php と同じ場所の files/ ディレクトリに保存されます。
    ですが自動的には作成されませんので、あらかじめ作成しておく必要があります。その際パーミッションは 755 としてください。

    また、任意のディレクトリ名に変更したい場合には、flash_upload.php 内の 24 行目を変更します。

    $uploadDir = dirname(__FILE__) . '/files/';
    
  • サーバ側のアップロードスクリプトについて
    サンプル( demo.html )では、demo.html と同じ場所に flash_upload.php があることが前提となっています。
    ですが、実際に使用する場合にはそうはいきません。

    demo.html と flash_upload.php が異なる場所に置く場合には、form タグ中の action 属性で相対パスを指定します。
    たとえば、以下のようなディレクトリ構成で、index.html から jquploader を使用した場合、

    http://bizcaz.com/
    |
    +-- index.html
    |
    +-- js/
    |    +-- jquery/
    |          +-- jquery.js
    |          |
    |          +-- jquploader/
    |          |    +-- jquery.jqUploader.js
    |          |    +-- jquery.flash.js
    |          |    +-- flash_upload.php
    |          |    +-- jqUploader.swf
    |          |    +-- jqUploader.fla
    |          |
    

    以下のように form タグの action 属性を変更してあげます。

    <form method='post' action='js/jquery/jquploader/flash_upload.php' id='mailform' enctype='multipart/form-data'>
    
  • フラッシュファイルについて
    サンプル( demo.html )では、demo.html と同じ場所に jqUploader.swf があることが前提となっています。
    先ほどの flash_upload.php と同様に jqUploader.swf の場所を demo.html からの相対パスで指定することになります。

    具体的には JqUploader のパラメータで指定してあげます。
    わたしが作った jQuery 版メールフォームで指定したパラメータ設定例を以下に記します。

    <script type="text/javascript">
    //<![CDATA[
    $(document).ready(function() {
    $('#example1').jqUploader({
    /* フラッシュの背景色 */
    background:       'f4f6fb',
    /* プログレスバーの前景色 */
    barColor:         'f8b500',
    /* フラッシュの横幅 */
    width:            '300',
    /* 選択可能なファイルの拡張子 */
    allowedExt:       '*.txt; *.css; *.html',
    /* allowedExt プロパティで指定した拡張子の概要 */
    allowedExtDescr:  'Text file only (*.txt; *.css; *.html)',
    /* 不要です。別になくてもいいです */
    params:           {quality:'low'},
    /* アップロード完了時のメッセージ */
    validFileMessage: 'Thanks, now hit Upload!',endMessage: 'and don\'t you come back ;)',
    /* 隠す必要があるボタンがなければ不要です。*/
    hideSubmit:       false,
    /* ★ここが肝心!! ここに相対パスを指定してあげます。*/
    src:              'jquploader/jqUploader.swf'
    });
    });
    //]]>
    
  • jqUploader の使い方
    上記パラメータ設定で、#example1 という ID を指定しています。これは具体的には以下のようなブロックタグを指しています。

    <p id="example1">
    <label for="upload_file">Choose a file to upload: </label>
    <input name="MAX_FILE_SIZE" value="51200" type="hidden" />
    <input name="upload_file" id="upload_file" type="file" />
    </p>
    

    赤い字の部分が JqUploader によってフラッシュが適用される場所になります。
    そして、青い字の部分は最大転送サイズを指定してます。

    また、アップロード完了前はメール送信ボタンを隠したい場合には hideSubmit パラメータを true にすることで実現できます。 その際、送信ボタンは以下のようにする必要があります。

    <input type="submit" name="submit" value="Send" />
    

    青い字の部分は当然「submit」にする必要がありますが、赤い字の部分のように name プロパティで「submit」にしておかないと、hideSubmit パラメータで true にしても隠されませんのでご注意ください。

こんなところでしょうか。
あとはサンプルはあくまでもサンプルでして、実際に使う状況とは異なることを留意してください。
でも、上記注意点がちゃんと変更されれば問題なく設置できると思います。

わたしが JqUploader を使ったのはだいぶ前だったので、伝えるべき大事なこと書き忘れてなければいいけど (; ̄∇ ̄A ほほ
もしそんなことがあったら追記しておきます。

では。おやすみなさい。

 Trackback Pings(0)

No trackbacks found.

 Comments(4)

#1: Posted by 倫子 [RES]

ふふ( ̄m ̄* )♪シャー携帯すごいですよ~
シャーザクよりズゴックの方が好きなんだけどなぁ。
キャスバル兄さん好きなので気になるけど
私はauから逃れられません(;´д`)トホホ
ソフトバンクはキティーちゃんからスヌーピーまで
キャラ携帯に力入れてますね(;´▽`A``

メールフォーム、IEから見るとちゃんと
お詫びメッセージが出ますね!
すごーい☆彡さすがですw
今度何か添付して送りますね♪

#2: Posted by bzbell Author Profile Page [RES]

>>1 倫子 さん

こんばんわ^^

倫子さんもシャー好きでしたかっ (●>∀<●)
聞いた話によると充電器がシャーザクのアタマなんだとか (; ̄∇ ̄A
箱ってどんだけでっかいの!? 気になるところです。

でも、オブジェとしていいかもです♪
いっつもそこら辺に転がってるわたしの充電器とは大違い (; ̄∇ ̄A

#3: Posted by かわぐち [RES]

どうも、おひさです、かわぐちです。

>ガンダム好きにはたまらないんでしょうね
たまらんです、ほしいです、使わず飾りたいです!!!!!
ですが、私は au ユーザー。
ウチの奥さんにそれとなく話してみたんですが・・・、
軽~く、却下されました。

ん~、でもほし~。
サンタさんに、お願いしようかな?

#4: Posted by bzbell [RES]

>>3 かわぐち さん

こんにちわ^^

> 軽~く、却下されました。

はは (;^.^A 残念ですね。
てか、その機種って限定品なんですかね!?
限定品じゃないのなら、そのうち安くなるだろうから、その時に再度お願いしてみるっ!!

 Post a Comment

コメント用フィード