ユーザのハードドライブ全体のフォルダ選択を提示する必要があります(スクリプトはユーザpc上で実行されます)。このリストから、ユーザーは1つまたは複数のフォルダーを選択できます。私はjqueryライブラリのdynatree(http://code.google.com/p/dynatree/)を使ってプレゼンテーションを行っています。フォルダ選択ダイアログのパフォーマンス
私のスクリプトは次のように動作します。指定したドライブ文字またはパスのすべてのフォルダ
1.Listと、この再帰関数を経由してDynatree可読形式にそれを解析:
コード:
function getDirectory($path = '.', $level = 0, $id = 0){
$ignore = array('cgi-bin', '.', '..' , 'windows', 'user_folders', 'user_profiles');
$dh = @opendir($path);
$zaehl = 0;
if($level != 0) echo(', children: [ ');
while(false !== ($file = readdir($dh))){
$zaehl++;
if(!in_array(strtolower($file), $ignore)){
$spaces = str_repeat(' ', ($level * 4));
if(is_dir("$path/$file")){
echo('{title: "'.$file.'", isFolder: true, key: "'.$path.'/'.$file.'"');
echo("\n");
getDirectory("$path/$file", ($level+1), $id.'.'.$zaehl);
echo('},');
echo("\n");
}
}
}
if($level != 0)
{
echo(']');
}
closedir($dh);
}
2.Present Dynatreeを使用してリスト:
$("#tree3").dynatree({
checkbox: true,
selectMode: 3,
children: treeData,
onSelect: function(select, node) {
var selKeys = $.map(node.tree.getSelectedNodes(), function(node){
return node.data.key;
});
var selRootNodes = node.tree.getSelectedNodes(true);
var selRootKeys = $.map(selRootNodes, function(node){
return node.data.key;
});
$("#echoSelectionRootKeys3").text(selRootKeys.join(", "));
$("#echoSelectionRoots3").text(selRootNodes.join(", "));
},
onDblClick: function(node, event) {
node.toggleSelect();
},
onKeydown: function(node, event) {
if(event.which == 32) {
node.toggleSelect();
return false;
}
}
});
私はTHIをドント私は基本的にそれを作成者のチュートリアルからコピーしたので、プロセス番号2が問題です。私は、プロセス1の間にフォルダをリストしている間に間違いをしたと思います。
いくつかのフォルダを持つハードドライブのパラメータを使用してgetDirectoryスクリプトを実行すると、魅力のように機能します。多くのネストされたフォルダを持つ(通常)ハードドライブになると、数分かかることがあります。
誰かがフォルダをリストする良い方法や、サーバー側のフォルダ作成ダイアログを表示する完全な別の解決法を知っていますか?