プロが教えるわが家の防犯対策術!

ウェブページで複数ファイルのアップロードを作るために、Plupload(互換性のためにHTML4バージョン)というJqueryプラグインを使うことにしました。基本的に機能していますが、動的にアップロードディレクトリーを選択したいと思います。Javascriptにあまり詳しくなくて、どうやってその機能を加えればいいのか困っています。

実装したい機能:
ユーザーが「category」フィールドからカテゴリーを選択して、選択されたカテゴリーをもとに異なるディレクトリーにアップロードされます。
例えばcategoryAを選択すれば、ファイルは/uploads/categoryA/(ユーザ名)/というディレクトリーにアップロードされます。
categoryBを選択すれば、ファイルは/uploads/categoryB/(ユーザ名)/というディレクトリーにアップロードされます。
などなど

こちらのプラグインを使ったことのある方がいらっしゃいましたら、実装の方法について教えていただきたいのですが。
宜しくお願いいたします。

A 回答 (1件)

このプラグインを使ったことはありませんがサーバのディレクトリにアップロードするということであれば、アップロード先のディレクトリを動的に変更するのはサーバ側のプログラムの仕事になります。


アップロード先ディレクトリを決定する処理はサーバ側のプログラムに書き、決定するための要因となるデータをクライアント側から渡してやります。
クライアントからサーバにデータを渡す方法としては、ユーザーがフォーム要素を使って選択するということなのでHTTPリクエスト(GET,POST)のパラメータを使用すればいいと思います。

ただ、サーバに(パラメータで)渡したデータをサーバ側で入力検証などを行わずにそのまま使用するのは危険なので、安全にアップロード先を決定する処理が必要になります。

基本的にはjavascriptを使う必要はありませんが、クライアント側でさせたい動作によります。

公式のサンプルを例に修正してみるとこんなかんじでどうでしょうか。
http://www.plupload.com/example_queuewidget.php

<form>
<div id="uploader">
<p>You browser doesn't have Flash, Silverlight, Gears, BrowserPlus or HTML5 support.</p>
</div>

<!-- カテゴリを選択するためのセレクタを追加 -->
<select name="cagegory">
<option val="foo">foo</option>
<option val="bar">bar</option>
</select>
</form>


このソースの47行目~のコードの中にある $('form').submit() が実行された時に上で追加したセレクト要素の値がHTTPリクエストのパラメータとしてサーバ側のプログラムに送られます。

// When all files are uploaded submit form
uploader.bind('UploadProgress', function() {
if (uploader.total.uploaded == uploader.files.length)
$('form').submit(); // <- フォーム送信処理
});

サーバー側のプログラムがPHPなら$_POST['category']なりで受けとってアップロード先を決定する処理に回せばいいかと思います。

この回答への補足

ご提案された方法を基に、いろいろ工夫してやっとできました。
本当にありがとうございます。

補足日時:2011/08/15 11:08
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます
お礼が遅くなってすみません。ご指定された方法で試します。試してからまた質問があれば、お手間をおかけしますが、またこちらで聞かせていただきます。

お礼日時:2011/08/12 13:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!