SpringMVC http大文件断点续传上传
2020-12-27 16:28
                         标签:pid   list   false   select   搜索   mysql   amp   delete   path    文件夹数据库处理逻辑 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           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         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) });     } }   1.在webuploader.js大概4880行代码左右,在动态生成的input组件的下面(也可以直接搜索input),增加webkitdirectory属性。 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 
         {              this.addFileLoc(json.files[i]);          }          setTimeout(function () { _this.PostFirst(); },500);      };      this.open_folders = function (json)     {         for (var i = 0, l = json.folders.length; 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 
          {              this.addFileLoc(json.files[i]);          }      };   后端代码逻辑大部分是相同的,目前能够支持MySQL,Oracle,SQL。在使用前需要配置一下数据库,可以参考我写的这篇文章:http://blog.ncmem.com/wordpress/2019/08/07/java超大文件上传与下载/ 可以入群一起讨论:374992201 SpringMVC http大文件断点续传上传 标签:pid   list   false   select   搜索   mysql   amp   delete   path    原文地址:https://www.cnblogs.com/songsu/p/13030337.html 
 
文章标题:SpringMVC http大文件断点续传上传
文章链接:http://soscw.com/index.php/essay/38626.html