WebUploader一括アップロードとダウンロードの大きなファイル

データベース処理ロジックフォルダ

パブリッククラス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

おすすめ

転載: www.cnblogs.com/songsu/p/12560529.html