html大文件传输分享

文件夹数据库处理逻辑

public class DbFolder

JSONObject root;

public DbFolder()

this.root = new JSONObject();

this.root.put(“f_id”, “”);

this.root.put(“f_nameLoc”, “根目录”);

this.root.put(“f_pid”, “”);

this.root.put(“f_pidRoot”, “”);

/**

  • 将JSONArray转换成map

  • @param folders

  • @return

public Map

Map

for(int i = 0 , l = folders.size();i

JSONObject o = folders.getJSONObject(i);

String id = o.getString(“f_id”);

dt.put(id, o);

return dt;

public Map

//默认加载根目录

String sql = String.format(“select f_id,f_nameLoc,f_pid,f_pidRoot from up6_folders where f_pidRoot=’%s'”, pidRoot);

SqlExec se = new SqlExec();

JSONArray folders = se.exec(“up6_folders”, sql, “f_id,f_nameLoc,f_pid,f_pidRoot”,””);

return this.toDic(folders);

public ArrayList sortByPid( Map

String cur = idCur;

while (true)

//key不存在

if (!dt.containsKey(cur)) break;

JSONObject d = dt.get(cur);//查父ID

psort.add(0, d);//将父节点排在前面

cur = d.getString(“f_pid”).trim();//取父级ID

if (cur.trim() == “0”) break;

if ( StringUtils.isBlank(cur) ) break;

return psort;

public JSONArray build_path_by_id(JSONObject fdCur) {

String id = fdCur.getString(“f_id”).trim();//

String pidRoot = fdCur.getString(“f_pidRoot”).trim();//

//根目录

ArrayList psort = new ArrayList();

if (StringUtils.isBlank(id))

psort.add(0, this.root);

return JSONArray.fromObject(psort);

//构建目录映射表(id,folder)

Map

//按层级顺序排列目录

psort = this.sortByPid(dt, id, psort);

SqlExec se = new SqlExec();

//是子目录->添加根目录

if (!StringUtils.isBlank(pidRoot))

JSONObject root = se.read(“up6_files”

, “f_id,f_nameLoc,f_pid,f_pidRoot”

, new SqlParam[] { new SqlParam(“f_id”, pidRoot) });

psort.add(0, root);

}//是根目录->添加根目录

else if (!StringUtils.isBlank(id) && StringUtils.isBlank(pidRoot))

JSONObject root = se.read(“up6_files”

, “f_id,f_nameLoc,f_pid,f_pidRoot”

, new SqlParam[] { new SqlParam(“f_id”, id) });

psort.add(0, root);

psort.add(0, this.root);

return JSONArray.fromObject(psort);

public FileInf read(String id) {

SqlExec se = new SqlExec();

String sql = String.format(“select f_pid,f_pidRoot,f_pathSvr from up6_files where f_id=’%s’ union select f_pid,f_pidRoot,f_pathSvr from up6_folders where f_id=’%s'”, id,id);

JSONArray data = se.exec(“up6_files”, sql, “f_pid,f_pidRoot,f_pathSvr”,””);

JSONObject o = (JSONObject)data.get(0);

FileInf file = new FileInf();

file.id = id;

file.pid = o.getString(“f_pid”).trim();

file.pidRoot = o.getString(“f_pidRoot”).trim();

file.pathSvr = o.getString(“f_pathSvr”).trim();

return file;

public Boolean exist_same_file(String name,String pid)

SqlWhereMerge swm = new SqlWhereMerge();

swm.equal(“f_nameLoc”, name.trim());

swm.equal(“f_pid”, pid.trim());

swm.equal(“f_deleted”, 0);

String sql = String.format(“select f_id from up6_files where %s “, swm.to_sql());

SqlExec se = new SqlExec();

JSONArray arr = se.exec(“up6_files”, sql, “f_id”, “”);

return arr.size() > 0;

/**

  • 检查是否存在同名目录

  • @param name

  • @param pid

  • @return

public Boolean exist_same_folder(String name,String pid)

SqlWhereMerge swm = new SqlWhereMerge();

swm.equal(“f_nameLoc”, name.trim());

swm.equal(“f_deleted”, 0);

swm.equal(“LTRIM (f_pid)”, pid.trim());

String where = swm.to_sql();

String sql = String.format(“(select f_id from up6_files where %s ) union (select f_id from up6_folders where %s)”, where,where);

SqlExec se = new SqlExec();

JSONArray fid = se.exec(“up6_files”, sql, “f_id”, “”);

return fid.size() > 0;

public Boolean rename_file_check(String newName,String pid)

SqlExec se = new SqlExec();

JSONArray res = se.select(“up6_files”

, “f_id”

,new SqlParam[] {

new SqlParam(“f_nameLoc”,newName)

,new SqlParam(“f_pid”,pid)

},””);

return res.size() > 0;

public Boolean rename_folder_check(String newName, String pid)

SqlExec se = new SqlExec();

JSONArray res = se.select(“up6_folders”

, “f_id”

, new SqlParam[] {

new SqlParam(“f_nameLoc”,newName)

,new SqlParam(“f_pid”,pid)

},””);

return res.size() > 0;

public void rename_file(String name,String id) {

SqlExec se = new SqlExec();

se.update(“up6_files”

, new SqlParam[] { new SqlParam(“f_nameLoc”, name) }

, new SqlParam[] { new SqlParam(“f_id”, id) });

public void rename_folder(String name, String id, String pid) {

SqlExec se = new SqlExec();

se.update(“up6_folders”

, new SqlParam[] { new SqlParam(“f_nameLoc”, name) }

, new SqlParam[] { new SqlParam(“f_id”, id) });

function FileUploader(fileLoc, mgr)

var _this = this;

this.id = fileLoc.id;

this.ui = { msg: null, process: null, percent: null, btn: { del: null, cancel: null,post:null,stop:null }, div: null};

this.isFolder = false; //不是文件夹

this.app = mgr.app;

this.Manager = mgr; //上传管理器指针

this.event = mgr.event;

this.Config = mgr.Config;

this.fields = jQuery.extend({}, mgr.Config.Fields, fileLoc.fields);//每一个对象自带一个fields幅本

this.State = this.Config.state.None;

this.uid = this.fields.uid;

this.fileSvr = {

pid: “”

, id: “”

, pidRoot: “”

, f_fdTask: false

, f_fdChild: false

, uid: 0

, nameLoc: “”

, nameSvr: “”

, pathLoc: “”

, pathSvr: “”

, pathRel: “”

, md5: “”

, lenLoc: “0”

, sizeLoc: “”

, FilePos: “0”

, lenSvr: “0”

, perSvr: “0%”

, complete: false

, deleted: false

};//json obj,服务器文件信息

this.fileSvr = jQuery.extend(this.fileSvr, fileLoc);

2.可以获取路径

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]);

可以入群一起讨论:374992201

Original: https://www.cnblogs.com/songsu/p/14926584.html
Author: Xproer-松鼠
Title: html大文件传输分享

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/546074/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux进程调度器

    完全公平调度器 用黑体标出的是文章的主线,未用黑体标出的内容是对黑体内容的解释或注解。 每次调用调度器时,它会挑选具有最高等待时间的进程,把CPU提供给该进程。如果经常发生这种情况…

    技术杂谈 2023年7月24日
    074
  • Vue系列—理解Vue.nextTick使用及源码分析(五)

    一. 什么是Vue.nextTick()? 2.1 更改数据后,进行节点DOM操作。 比如修改数据、修改节点样式、等操作。比如说我修改data中的一个属性数据后,如果我这个时候直接…

    技术杂谈 2023年6月1日
    089
  • Chemical Bonding and Molecular Structure

    1.1. Description of Molecular Structure Using Valence Bond Concepts Lewis假设化学键是共享电子的结果,并提出…

    技术杂谈 2023年7月24日
    068
  • 一些隐式转化的示例

    小转大默认转换 大转小需要强转转化 转换 的目的是赋值 //整形 默认 int 浮点型 默认 double 只有同类型数据才可以相加 结果是同类型数据 //1.自动类型转化 小转大…

    技术杂谈 2023年6月21日
    082
  • C++ 标准库 std::atomic 及 std::memory_order

    C++ 标准库提供了原子操作。(我已经懒得写序言了) ==================================== 先来说原子操作的概念: 原子操作是多线程当中对资源进…

    技术杂谈 2023年6月21日
    088
  • 访问修饰符protected和default的区别,成员变量和局部变量

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    技术杂谈 2023年7月11日
    0102
  • 类的动态装载java

    类的动态装载 首先,我们要明白类加载的过程,再来区分静态加载和动态加载,类加载的过程,本质上就是将类文件,从硬盘读取到内存中的过程,而静态加载是在编译时加载,动态加载是在程序运行时…

    技术杂谈 2023年7月23日
    070
  • 常见Git命令汇总

    前言 最近,有朋友私信让我就 git &#x4F7F;&#x7528;做篇文章分享,分享一下我在日常工作中是如何使用 git的。我当场就收费两包辣条,最后讨价还价,…

    技术杂谈 2023年7月11日
    075
  • 基于DDD领域建模思想、COLA开源架构和CQRS模式设计和构建货物运输系统

    2003年,DDD(领域驱动设计)这一软件开发的方法与愿景经由建模专家 Eric Evans 的经典著作Domain-Driven Design: Tackling Complex…

    技术杂谈 2023年6月1日
    0107
  • 简单易懂讲注解

    注解是什么 简单的说,注解就是一种将元数据信息从 xml 剥离开来,然后保存在 java 源代码中,这将使得代码更加清晰易懂,无需维护两个地方: java 源代码以及 xml 配置…

    技术杂谈 2023年7月25日
    072
  • SpringMVC

    SpringMVC 注解收集: -@component 组件 -@service service -@controller contro1ler /*代表这个类会被Spring接管…

    技术杂谈 2023年6月21日
    077
  • 个人学习-Linux-IO多路复用

    [1]confirmwz博客:Epoll原理解析https://blog.csdn.net/armlinuxww/article/details/92803381; [2]hech…

    技术杂谈 2023年6月21日
    0109
  • ndk原生例子

    https://hub.fastgit.xyz/android/ndk-samples/blob/main/native-activity/app/src/main/cpp/mai…

    技术杂谈 2023年5月31日
    062
  • WordPress中安装插件需要ftp怎么办?

    在初次搭建wordpress成功后,老季想安装wordpress中有趣的插件时缺发现需要ftp服务,同样的升级插件的话也需要输入ftp的用户名密码。其实不用真的搭建了一个ftp服务…

    技术杂谈 2023年6月1日
    095
  • 使用微软分布式缓存服务Velocity Part 1

    概述 Velocity是微软推出的分布式缓存解决方案,为开发可扩展性,可用的,高性能的应用程提供支持,可以缓存各种类型的数据,如CLR对象、XML、二进制数据等,并且支持集群模式的…

    技术杂谈 2023年5月31日
    074
  • 12.路径总和

    title: 路径总和 📃 题目描述 题目链接:路径总和 🔔 解题思路 可以参考一下 二叉树的所有路径 这题; 方法一:递归方法,回溯,重点:每次传入当前数据的总和进去,每次还需要…

    技术杂谈 2023年7月24日
    073
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球