데이터베이스 처리 로직 폴더
공용 클래스 DbFolder
{
된 JSONObject 루트;
공공 DbFolder ()
{
this.root 새로운 된 JSONObject를 () =;
this.root.put는 ( "", "f_id");
this.root.put ( "f_nameLoc", "根 目录");
this.root.put ( "", "f_pid");
( "f_pidRoot을", "") this.root.put;
}
/ **
* JSONArray지도로 변환
* @param 폴더
* @return
* /
공개지도 <문자열, 된 JSONObject> toDic (JSONArray 폴더)
{
지도 <문자열, 된 JSONObject> DT = 새의 HashMap <문자열, 된 JSONObject> ();
대해 INT (I 0, L = folders.size을 () =; I <L; I ++)
{
된 JSONObject O = folders.getJSONObject (I);
문자열 ID = o.getString ( "f_id");
dt.put (ID, O);
}
DT 반환;
}
공개지도 <문자열, 된 JSONObject> foldersToDic (문자열 pidRoot)
{
// 기본 루트 디렉토리를로드
문자열 SQL = 및 String.format ( "up6_folders에서 선택 f_id, f_nameLoc, f_pid, f_pidRoot 곳 f_pidRoot = '% s'이 (가)", pidRoot);
SE = SQLEXEC 새로운 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 (현재)) 휴식 경우;
된 JSONObject dt.get D = (현재); // 상위 ID를 확인
psort.add (0, d); // 친 노드 상면
CUR = d.getString ( "f_pid") 트림 (); // 부모 ID를 가지고
(cur.trim () == "0") 어기면;
(StringUtils.isBlank (현재)) 휴식 경우;
}
psort를 반환;
}
공공 JSONArray build_path_by_id (된 JSONObject fdCur) {
문자열 ID = fdCur.getString ( "f_id") () 트림;. //
문자열 pidRoot = fdCur.getString ( "f_pidRoot") () 트림;. //
// 루트 디렉토리
ArrayList를 <된 JSONObject> psort = 새로운 ArrayList를 <된 JSONObject> ();
경우 (StringUtils.isBlank (ID))
{
psort.add (0 this.root);
창 JSONArray.fromObject (psort);
}
// 빌드 디렉토리 매핑 테이블 (ID, 폴더)
지도 <문자열, 된 JSONObject> DT = this.foldersToDic (pidRoot);
// 계층 주문 카탈로그
psort this.sortByPid = (DT, ID psort);
SE = SQLEXEC 새로운 SQLEXEC ();
> 루트 디렉토리 추가 - // 하위 디렉토리입니다
만약 (! StringUtils.isBlank (pidRoot))
{
된 JSONObject 루트 = se.read ( "up6_files"
"f_id, f_nameLoc, f_pid, f_pidRoot"
새로운 SqlParam은 []) {새로운 SqlParam은 (pidRoot "f_id")};
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) {
SE = SQLEXEC 새로운 SQLEXEC ();
문자열 SQL = 및 String.format는 ( "f_id = '% s'이 (가) 노동 조합이 up6_folders에서 f_pid, f_pidRoot, f_pathSvr을 선택 곳 up6_files에서 f_pid, f_pidRoot, f_pathSvr을 선택한 경우 f_id = '% s'이 (가)", ID, ID);
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);
문자열 및 String.format는 SQL = ( "up6_files에서 선택 f_id 여기서 % S"swm.to_sql ());
SE = SQLEXEC 새로운 SQLEXEC ();
JSONArray 도착 = se.exec ( "up6_files"SQL "f_id", "");
> 0) (arr.size를 리턴;
}
/ **
같은 이름의 디렉토리가 있는지 * 확인
* @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_folders %의)에서 f_id 선택 곳 (up6_files에서 f_id 선택"어디, 어디);
SE = SQLEXEC 새로운 SQLEXEC ();
JSONArray FID = se.exec ( "up6_files"SQL "f_id", "");
리턴 fid.size ()> 0;
}
공공 부울 rename_file_check (문자열 newName로, 문자열 PID)
{
SE = SQLEXEC 새로운 SQLEXEC ();
JSONArray 고해상도 = se.select ( "up6_files"
"f_id"
새로운 SqlParam [{
새로운 SqlParam ( "f_nameLoc", newName로)
새로운 SqlParam ( "f_pid", PID)
} "");
리턴 res.size ()> 0;
}
공공 부울 rename_folder_check (문자열 newName로, 문자열 PID)
{
SE = SQLEXEC 새로운 SQLEXEC ();
JSONArray 고해상도 = se.select ( "up6_folders"
"f_id"
새로운 SqlParam [{
새로운 SqlParam ( "f_nameLoc", newName로)
새로운 SqlParam ( "f_pid", PID)
} "");
리턴 res.size ()> 0;
}
공공 무효 rename_file (문자열 이름, 문자열 ID) {
SE = SQLEXEC 새로운 SQLEXEC ();
se.update ( "up6_files"
새로운 SqlParam [{새로운 SqlParam ( "f_nameLoc"명)}
새로운 SqlParam은 [{새로운 SqlParam는 ( "f_id"ID)});
}
공공 무효 rename_folder (문자열 이름, 문자열 ID, 문자열 PID) {
SE = SQLEXEC 새로운 SQLEXEC ();
se.update ( "up6_folders"
새로운 SqlParam [{새로운 SqlParam ( "f_nameLoc"명)}
새로운 SqlParam은 [{새로운 SqlParam는 ( "f_id"ID)});
}
}
1. webuploader.js 아마도 코드의 4880 개 라인들에 대해, 다음의 동적으로 생성 된 입력 요소 (입력 직접 검색 할 수있다) webkitdirectory 특성을 증가시킨다.
함수 FileUploader (fileLoc, MGR)
{
VAR =이 _this;
this.id = fileLoc.id;
this.ui = {MSG : 널 (null) 공정 : 널 (null), 퍼센트 : 널 (null), BTN : {델 : 널 (null) 취소 : 널 (null), 게시물 : 널 (null), 정지 : 널 (null)}를, 사업부 : 널 (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를 = 나는 <L; I ++)
{
this.addFileLoc (json.files [I]);
}
에서는 setTimeout (함수 () {_this.PostFirst ()}, 500);
};
this.open_folders = 함수 (JSON)
{
위한 VAR (I 0, L = json.folders.length를 = 나는 <L; I ++) {
this.addFolderLoc (json.folders [I]);
}
에서는 setTimeout (함수 () {_this.PostFirst ()}, 500);
};
this.paste_files = 함수 (JSON)
{
위한 VAR (I 0, L = json.files.length를 = 나는 <L; I ++)
{
this.addFileLoc (json.files [I]);
}
};
백엔드 코드 로직의 대부분은 현재의 MySQL, 오라클, SQL을 지원 동일합니다. 데이터베이스를 구성 할 필요성을 사용하기 전에이 문서 작성하는 저를 참조 할 수 있습니다 : http://blog.ncmem.com/wordpress/2019/08/07/java 업로드 큰 파일을 다운로드 /