Carpeta lógica de procesamiento de base de datos
DBFolder clase pública
{
JSONObject raíz;
DBFolder pública ()
{
this.root = new JSONObject ();
this.root.put ( "F_ID", "");
this.root.put ( "f_nameLoc", "根 目录");
this.root.put ( "f_pid", "");
this.root.put ( "f_pidRoot", "");
}
/ **
* El JSONArray convierte en un mapa
* @param carpetas
* @regreso
* /
pública Map <String, JSONObject> Todić (carpetas JSONArray)
{
Map <String, JSONObject> dt = new HashMap <String, JSONObject> ();
for (int i = 0, l = folders.size (); i <l; ++ i)
{
JSONObject o = folders.getJSONObject (i);
String id = o.getString ( "F_ID");
dt.put (id, o);
}
volver dt;
}
pública Map <String, JSONObject> foldersToDic (String pidRoot)
{
// cargar el directorio raíz predeterminado
Cadena SQL = String.Format ( "select F_ID, f_nameLoc, f_pid, f_pidRoot de up6_folders donde f_pidRoot = '% s'", pidRoot);
SQLExec se = nuevo SQLExec ();
JSONArray carpetas = se.exec ( "up6_folders", SQL, "F_ID, f_nameLoc, f_pid, f_pidRoot", "");
volver this.toDic (carpetas);
}
pública ArrayList <JSONObject> sortByPid (Map <String, JSONObject> dt, Cadena idCur, ArrayList <JSONObject> PSORT) {
Cadena cur = idCur;
while (true)
{
// clave no existe
si (dt.containsKey (act)!) break;
JSONObject D = dt.get (act); // comprobar la ID padre
psort.add (0, d); superficie superior // nodo padre
act = d.getString ( "f_pid") ajuste () ;. // tomar la Identificación de los padres
si la rotura (cur.trim () == "0");
si (StringUtils.isBlank (act)) break;
}
PSORT regresar;
}
pública JSONArray build_path_by_id (JSONObject fdCur) {
String id = fdCur.getString ( "F_ID") recortar ();. //
Cadena pidRoot = fdCur.getString ( "f_pidRoot") recortar ();. //
// directorio raíz
ArrayList <JSONObject> PSORT = new ArrayList <JSONObject> ();
si (StringUtils.isBlank (id))
{
psort.add (0, this.root);
retorno JSONArray.fromObject (PSORT);
}
// tabla de asignación de directorio de construcción (id, carpeta)
Map <String, JSONObject> dt = this.foldersToDic (pidRoot);
// jerárquicamente catálogo de venta
PSORT = this.sortByPid (dt, ID, PSORT);
SQLExec se = nuevo SQLExec ();
// es un subdirectorio -> Añadir directorio raíz
if (! StringUtils.isBlank (pidRoot))
{
JSONObject raíz = se.read ( "up6_files"
"F_ID, f_nameLoc, f_pid, f_pidRoot"
, Nuevo SqlParam [] {new SqlParam ( "F_ID", pidRoot)});
psort.add (0, raíz);
} // directorio raíz -> directorio raíz complemento
else if (! StringUtils.isBlank (id) && StringUtils.isBlank (pidRoot))
{
JSONObject raíz = se.read ( "up6_files"
"F_ID, f_nameLoc, f_pid, f_pidRoot"
, Nuevo SqlParam [] {new SqlParam ( "F_ID", id)});
psort.add (0, raíz);
}
psort.add (0, this.root);
retorno JSONArray.fromObject (PSORT);
}
pública FileInf leer (String id) {
SQLExec se = nuevo SQLExec ();
Cadena SQL = String.Format ( "seleccionar f_pid, f_pidRoot, f_pathSvr de up6_files donde F_ID = '% s' union select f_pid, f_pidRoot, f_pathSvr de up6_folders donde F_ID = '% s'", de la identificación, id);
datos JSONArray = se.exec ( "up6_files", sql, "f_pid, f_pidRoot, f_pathSvr", "");
JSONObject o = (JSONObject) data.get (0);
FileInf archivo = new FileInf ();
file.id = id;
file.pid = o.getString ( "f_pid") recortar ().;
file.pidRoot = o.getString ( "f_pidRoot") recortar ().;
file.pathSvr = o.getString ( "f_pathSvr") recortar ().;
archivo de retorno;
}
pública de Boole exist_same_file (String nombre, cadena PID)
{
SqlWhereMerge cantidad nueva SqlWhereMerge = ();
swm.equal ( "f_nameLoc", name.trim ());
swm.equal ( "f_pid", pid.trim ());
swm.equal ( "f_deleted", 0);
Cadena SQL = String.Format ( "seleccionar F_ID de up6_files donde% s", swm.to_sql ());
SQLExec se = nuevo SQLExec ();
JSONArray arr = se.exec ( "up6_files", SQL, "F_ID", "");
arr.size volver ()> 0;
}
/ **
* Comprobar si existe un directorio con el mismo nombre
* @Param nombre
* @Param pid
* @regreso
* /
exist_same_folder pública de Boole (String nombre, cadena PID)
{
SqlWhereMerge cantidad nueva SqlWhereMerge = ();
swm.equal ( "f_nameLoc", name.trim ());
swm.equal ( "f_deleted", 0);
swm.equal ( "LTRIM (f_pid)", pid.trim ());
Cadena donde = swm.to_sql ();
Cadena SQL = String.Format ( "(seleccionar F_ID de up6_files donde) la unión% s (seleccionar F_ID de up6_folders donde% s)", en donde, en donde);
SQLExec se = nuevo SQLExec ();
JSONArray fid = se.exec ( "up6_files", SQL, "F_ID", "");
fid.size retorno ()> 0;
}
pública de Boole rename_file_check (String nuevoNombre, Cadena pid)
{
SQLExec se = nuevo SQLExec ();
JSONArray res = se.select ( "up6_files"
"F_ID"
, Nuevo SqlParam [] {
nueva SqlParam ( "f_nameLoc", nuevoNombre)
, Nuevo SqlParam ( "f_pid", pid)
}, "");
res.size retorno ()> 0;
}
pública de Boole rename_folder_check (String nuevoNombre, Cadena pid)
{
SQLExec se = nuevo SQLExec ();
JSONArray res = se.select ( "up6_folders"
"F_ID"
, Nuevo SqlParam [] {
nueva SqlParam ( "f_nameLoc", nuevoNombre)
, Nuevo SqlParam ( "f_pid", pid)
}, "");
res.size retorno ()> 0;
}
rename_file pública vacío (nombre String, String id) {
SQLExec se = nuevo SQLExec ();
se.update ( "up6_files"
, Nuevo SqlParam [] {new SqlParam ( "f_nameLoc", nombre)}
, Nuevo SqlParam [] {new SqlParam ( "F_ID", id)});
}
pública rename_folder void (String nombre, String Id, Cadena pid) {
SQLExec se = nuevo SQLExec ();
se.update ( "up6_folders"
, Nuevo SqlParam [] {new SqlParam ( "f_nameLoc", nombre)}
, Nuevo SqlParam [] {new SqlParam ( "F_ID", id)});
}
}
1. webuploader.js probablemente alrededor de 4880 líneas de código, la siguiente componente de entrada generado dinámicamente (de entrada puede ser la búsqueda directa), aumentar las propiedades webkitdirectory.
función FileUploader (fileLoc, mgr)
{
var _Está = esta;
this.id = fileLoc.id;
this.ui = {mensaje: null, proceso: nulo, por ciento: null, BTN: {DEL: null, cancelación: null, mensaje: null, parada: null}, div: null};
this.isFolder = false; // no una carpeta
this.app = mgr.app;
this.Manager = mgr; // puntero gestor de carga
this.event = mgr.event;
this.Config = mgr.Config;
this.fields = jQuery.extend ({}, mgr.Config.Fields, fileLoc.fields); // para cada uno campos de objetos que llevan una banda de la presente
this.State = this.Config.state.None;
this.uid = this.fields.uid;
this.fileSvr = {
pid: ""
, carné de identidad: ""
, PidRoot: ""
, F_fdTask: falsa
, F_fdChild: falsa
UID: 0
, NameLoc: ""
, NameSvr: ""
, PathLoc: ""
, PathSvr: ""
, PathRel: ""
, MD5: ""
, Lenloc: "0"
, SizeLoc: ""
, FilePos: "0"
, LenSvr: "0"
, PerSvr: "0%"
, Completa: falsa
, Eliminado: falsa
}; // JSON obj, información del servidor de archivos
this.fileSvr = jQuery.extend (this.fileSvr, fileLoc);
2. Se puede obtener la ruta
this.open_files = function (JSON)
{
for (var i = 0, l = json.files.length; i <l; ++ i)
{
this.addFileLoc (json.files [i]);
}
setTimeout (function () {_this.PostFirst ();}, 500);
};
this.open_folders = function (JSON)
{
for (var i = 0, l = json.folders.length; i <l; ++ i) {
this.addFolderLoc (json.folders [i]);
}
setTimeout (function () {_this.PostFirst ();}, 500);
};
this.paste_files = function (JSON)
{
for (var i = 0, l = json.files.length; i <l; ++ i)
{
this.addFileLoc (json.files [i]);
}
};
La mayor parte de la lógica del código de fondo es la misma, actualmente soporta MySQL, Oracle, SQL. Antes de usar la necesidad de configurar la base de datos, usted me puede referirse a escribir este artículo: http://blog.ncmem.com/wordpress/2019/08/07/java carga y descarga de archivos de gran tamaño /