データベース処理ロジックフォルダ
パブリッククラスDbFolder
{
JSONObjectルート;
公共DbFolder()
{
this.root =新しいJSONObject();
this.root.put( "F_ID"、 "");
this.root.put( "f_nameLoc"、 "根目录");
this.root.put( "f_pid"、 "");
this.root.put( "f_pidRoot"、 "");
}
/ **
* JSONArrayはマップに変換しました
* @paramフォルダ
* @return
* /
公共の地図<文字列、JSONObject> toDic(JSONArrayフォルダ)
{
地図<文字列、JSONObject> DT =新しいHashMapの<文字列、JSONObject>();
ための式(I = 0 INT、L =)(folders.size; I <L; ++ i)は
{
JSONObject O = folders.getJSONObject(I)。
文字列ID = o.getString( "F_ID")。
dt.put(ID、O)。
}
dtを返します。
}
公共の地図<文字列、JSONObject> foldersToDic(文字列pidRoot)
{
//デフォルトのルートディレクトリを読み込みます
(pidRoot "f_pidRoot = '%S' up6_foldersから選択F_ID、f_nameLoc、f_pid、f_pidRoot")の文字列のSQL = String.Formatの。
SQLEXEC SE =新しいSQLEXEC();
JSONArrayフォルダ= se.exec( "up6_folders"、SQL、 "F_ID、f_nameLoc、f_pid、f_pidRoot"、 "");
this.toDic(フォルダ)を返します。
}
公共のArrayList <JSONObject> sortByPid(地図<文字列、JSONObject> DT、文字列idCur、のArrayList <JSONObject> PSORT){
文字列CUR = idCur。
しばらく(真)
{
//キーが存在しません。
(もし!dt.containsKey(CUR))休憩。
JSONObject D = dt.get(CUR); //親IDをチェック
psort.add(0、D); //親ノード上面
CUR = d.getString( "f_pid")トリム();. //親IDを取ります
(cur.trim()== "0")ブレークであれば、
(StringUtils.isBlank(CUR))ブレークであれば、
}
PSORTを返します。
}
公共JSONArray build_path_by_id(JSONObject fdCur){
。文字列ID = fdCur.getString( "F_ID")は、(トリム); //
文字列pidRoot = fdCur.getString( "f_pidRoot")(トリム); //
//ルートディレクトリ
ArrayListの<JSONObject> PSORT =新しいのArrayList <JSONObject>();
IF(StringUtils.isBlank(ID))
{
psort.add(0、this.root)。
リターンJSONArray.fromObject(PSORT)。
}
// buildディレクトリマッピングテーブル(ID、フォルダ)
地図<文字列、JSONObject> DT = this.foldersToDic(pidRoot)。
//階層的オーダーカタログ
PSORT = this.sortByPid(DT、ID、PSORT)。
SQLEXEC SE =新しいSQLEXEC();
//サブディレクトリである - >ルートディレクトリを追加します。
(もし!StringUtils.isBlank(pidRoot))
{
JSONObjectルート= se.read( "up6_files"
、 "F_ID、f_nameLoc、f_pid、f_pidRoot"
、新しいSqlParam [] {新SqlParam( "F_ID"、pidRoot)})。
psort.add(0、根);
} //ルートディレクトリ - >ルートディレクトリを追加
それ以外の場合(!StringUtils.isBlank(ID)&& StringUtils.isBlank(pidRoot))
{
JSONObjectルート= se.read( "up6_files"
、 "F_ID、f_nameLoc、f_pid、f_pidRoot"
、新しいSqlParam [] {新SqlParam( "F_ID"、ID)})。
psort.add(0、根);
}
psort.add(0、this.root)。
リターンJSONArray.fromObject(PSORT)。
}
公共FileInfを読み出し(文字列ID){
SQLEXEC SE =新しいSQLEXEC();
文字列のSQL = String.Formatの(ID、ID "F_ID = '%S' 組合がF_ID = '%S' up6_foldersからf_pid、f_pidRoot、f_pathSvrを選択up6_filesからf_pid、f_pidRoot、f_pathSvrを選択")。
JSONArrayデータ= se.exec( "up6_files"、SQL、 "f_pid、f_pidRoot、f_pathSvr"、 "");
JSONObject O =(JSONObject)data.get(0)。
FileInfファイル=新しいFileInf();
file.id = ID。
file.pid = o.getString( "f_pid")(トリム)。
file.pidRoot = o.getString( "f_pidRoot")(トリム)。
file.pathSvr = o.getString( "f_pathSvr")(トリム)。
ファイルを返します。
}
パブリックブールexist_same_file(文字列名、文字列のPID)
{
SqlWhereMerge新しいSqlWhereMerge量=();
swm.equal( "f_nameLoc"、name.trim());
swm.equal( "f_pid"、pid.trim());
swm.equal( "f_deleted"、0);
文字列のSQL = String.Formatの( "%sのup6_filesからF_ID選択"、swm.to_sql())。
SQLEXEC SE =新しいSQLEXEC();
JSONArray ARR = se.exec( "up6_files"、SQL、 "F_ID"、 "");
リターンarr.size()> 0;
}
/ **
同じ名前のディレクトリが存在するかどうかをチェック*
* @param名
* @param pidを
* @return
* /
パブリックブールexist_same_folder(文字列名、文字列のPID)
{
SqlWhereMerge新しいSqlWhereMerge量=();
swm.equal( "f_nameLoc"、name.trim());
swm.equal( "f_deleted"、0);
swm.equal( "LTRIM(f_pid)"、pid.trim());
ストリング= swm.to_sql()。
文字列のSQL = String.Formatの( "(%S up6_filesからF_ID選択)ユニオン(%S up6_foldersからF_ID選択)")。
SQLEXEC SE =新しいSQLEXEC();
JSONArray FID = se.exec( "up6_files"、SQL、 "F_ID"、 "");
リターンfid.size()> 0;
}
パブリックブールrename_file_check(文字列NEWNAME、文字列のPID)
{
SQLEXEC SE =新しいSQLEXEC();
JSONArray RES = se.select( "up6_files"
、 "F_ID"
、新しいSqlParam [] {
新しいSqlParam( "f_nameLoc"、NEWNAME)
、新SqlParam( "f_pid"、PID)
}、 "");
リターンres.size()> 0;
}
パブリックブールrename_folder_check(文字列NEWNAME、文字列のPID)
{
SQLEXEC SE =新しいSQLEXEC();
JSONArray RES = se.select( "up6_folders"
、 "F_ID"
、新しいSqlParam [] {
新しいSqlParam( "f_nameLoc"、NEWNAME)
、新SqlParam( "f_pid"、PID)
}、 "");
リターンres.size()> 0;
}
公共ボイドrename_fileこの(文字列名、文字列ID){
SQLEXEC SE =新しいSQLEXEC();
se.update( "up6_files"
、新しいSqlParam [] {新SqlParam( "f_nameLoc"、名)}
、新しいSqlParam [] {新SqlParam( "F_ID"、ID)})。
}
公共ボイドrename_folder(文字列名、文字列ID、文字列PID){
SQLEXEC SE =新しいSQLEXEC();
se.update( "up6_folders"
、新しいSqlParam [] {新SqlParam( "f_nameLoc"、名)}
、新しいSqlParam [] {新SqlParam( "F_ID"、ID)})。
}
}
おそらくコードの4880行、次の動的に生成された入力部(入力が直接検索することができる)、約1 webuploader.jsは、webkitdirectory特性を増大させます。
機能FileUploader(fileLoc、MGR)
{
varが=この_this。
this.id = fileLoc.id。
this.ui = {MSG:ヌル、プロセス:ヌル、パーセント:ヌル、BTN:{デル:ヌル、キャンセル:NULLを、ポスト:ヌル、STOP:ヌル}、DIV:NULL;}
this.isFolder =偽; //ないフォルダ
this.app = mgr.app。
this.Manager = MGR; //ポインタのアップロードマネージャ
this.event = mgr.event。
this.Config = mgr.Config。
this.fields = jQuery.extend({}、mgr.Config.Fields、fileLoc.fields); //現在のウェブを搬送する各オブジェクトのフィールドの
this.State = this.Config.state.None。
this.uid = this.fields.uid。
this.fileSvr = {
PID: ""
、ID: ""
、pidRoot: ""
、f_fdTask:偽
、f_fdChild:偽
、UID:0
、nameLoc: ""
、nameSvr: ""
、pathLoc: ""
、pathSvr: ""
、pathRel: ""
、MD5: ""
、lenLoc: "0"
、sizeLoc: ""
、FilePos: "0"
、lenSvr: "0"
、perSvr: "0%"
、完全な:偽
削除:偽
}; // JSON OBJ、ファイルサーバ情報
this.fileSvr = jQuery.extend(this.fileSvr、fileLoc)。
2.パスを取得することができます
this.open_files =関数(JSON)
{
ため(VAR iが0、L = json.files.lengthを=; I <L; ++ I)
{
this.addFileLoc(json.files [I])。
}
setTimeout(関数(){_this.PostFirst();}、500)。
}。
this.open_folders =関数(JSON)
{
ため(VAR iが0、L = json.folders.lengthを=; I <L; ++ I){
this.addFolderLoc(json.folders [I])。
}
setTimeout(関数(){_this.PostFirst();}、500)。
}。
this.paste_files =関数(JSON)
{
ため(VAR iが0、L = json.files.lengthを=; I <L; ++ I)
{
this.addFileLoc(json.files [I])。
}
}。
バックエンドのコード・ロジックの大部分は、現在のMySQLやOracle、SQLをサポートし、同じです。データベースを構成する必要性を使用する前に、あなたがこの記事を書くために私を指すことができます。http://blog.ncmem.com/wordpress/2019/08/07/java 大容量ファイルのアップロードとダウンロード/
グループ内の可能な議論:374 992 201