日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 图片分段上传_java文件分片上传,断点续传

發布時間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 图片分段上传_java文件分片上传,断点续传 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文件夾數據庫處理邏輯

publicclassDbFolder

{

JSONObject root;

publicDbFolder()

{

this.root =newJSONObject();

this.root.put("f_id","");

this.root.put("f_nameLoc","根目錄");

this.root.put("f_pid","");

this.root.put("f_pidRoot","");

}

/**

*將JSONArray轉換成map

*@paramfolders

*@return

*/

publicMap toDic(JSONArray folders)

{

Map dt =newHashMap();

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

{

JSONObject o = folders.getJSONObject(i);

String id = o.getString("f_id");

dt.put(id, o);

}

returndt;

}

publicMap foldersToDic(String pidRoot)

{

//默認加載根目錄

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

SqlExec se =newSqlExec();

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

returnthis.toDic(folders);

}

publicArrayList sortByPid( Map dt, String idCur, ArrayList psort) {

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;

}

returnpsort;

}

publicJSONArray build_path_by_id(JSONObject fdCur) {

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

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

//根目錄

ArrayList psort =newArrayList();

if(StringUtils.isBlank(id))

{

psort.add(0,this.root);

returnJSONArray.fromObject(psort);

}

//構建目錄映射表(id,folder)

Map dt =this.foldersToDic(pidRoot);

//按層級順序排列目錄

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

SqlExec se =newSqlExec();

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

if(!StringUtils.isBlank(pidRoot))

{

JSONObject root = se.read("up6_files"

,"f_id,f_nameLoc,f_pid,f_pidRoot"

,newSqlParam[] {newSqlParam("f_id", pidRoot) });

psort.add(0, root);

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

elseif(!StringUtils.isBlank(id) && StringUtils.isBlank(pidRoot))

{

JSONObject root = se.read("up6_files"

,"f_id,f_nameLoc,f_pid,f_pidRoot"

,newSqlParam[] {newSqlParam("f_id", id) });

psort.add(0, root);

}

psort.add(0,this.root);

returnJSONArray.fromObject(psort);

}

publicFileInf read(String id) {

SqlExec se =newSqlExec();

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 =newFileInf();

file.id = id;

file.pid = o.getString("f_pid").trim();

file.pidRoot = o.getString("f_pidRoot").trim();

file.pathSvr = o.getString("f_pathSvr").trim();

returnfile;

}

publicBoolean exist_same_file(String name,String pid)

{

SqlWhereMerge swm =newSqlWhereMerge();

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 =newSqlExec();

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

returnarr.size() > 0;

}

/**

*檢查是否存在同名目錄

*@paramname

*@parampid

*@return

*/

publicBoolean exist_same_folder(String name,String pid)

{

SqlWhereMerge swm =newSqlWhereMerge();

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 =newSqlExec();

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

returnfid.size() > 0;

}

publicBoolean rename_file_check(String newName,String pid)

{

SqlExec se =newSqlExec();

JSONArray res = se.select("up6_files"

,"f_id"

,newSqlParam[] {

newSqlParam("f_nameLoc",newName)

,newSqlParam("f_pid",pid)

},"");

returnres.size() > 0;

}

publicBoolean rename_folder_check(String newName, String pid)

{

SqlExec se =newSqlExec();

JSONArray res = se.select("up6_folders"

,"f_id"

,newSqlParam[] {

newSqlParam("f_nameLoc",newName)

,newSqlParam("f_pid",pid)

},"");

returnres.size() > 0;

}

publicvoidrename_file(String name,String id) {

SqlExec se =newSqlExec();

se.update("up6_files"

,newSqlParam[] {newSqlParam("f_nameLoc", name) }

,newSqlParam[] {newSqlParam("f_id", id) });

}

publicvoidrename_folder(String name, String id, String pid) {

SqlExec se =newSqlExec();

se.update("up6_folders"

,newSqlParam[] {newSqlParam("f_nameLoc", name) }

,newSqlParam[] {newSqlParam("f_id", id) });

}

}

1.在webuploader.js大概4880行代碼左右,在動態生成的input組件的下面(也可以直接搜索input),增加webkitdirectory屬性。

functionFileUploader(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(vari = 0, l = json.files.length; i < l; ++i)

{

this.addFileLoc(json.files[i]);

}

setTimeout(function() { _this.PostFirst(); },500);

};

this.open_folders =function(json)

{

for(vari = 0, l = json.folders.length; i < l; ++i) {

this.addFolderLoc(json.folders[i]);

}

setTimeout(function() { _this.PostFirst(); }, 500);

};

this.paste_files =function(json)

{

for(vari = 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超大文件上傳與下載/

總結

以上是生活随笔為你收集整理的java 图片分段上传_java文件分片上传,断点续传的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一级做a爱 | 日本人妖japanesexxx | 亚洲精品乱码久久久久久写真 | 国产天堂视频 | 精品国产伦一区 | 修仙淫交(高h)h文 | 韩国一级淫片免费看 | 亚洲第一区视频 | 一级少妇女片 | 免费毛片播放 | 日韩 国产 一区 | 成人污视频| 夜夜嗨av禁果av粉嫩avhd | 国精无码欧精品亚洲一区蜜桃 | 欧美人体做爰大胆视频 | 大香伊人 | 色呦呦免费观看 | 国产久一 | 在线男人天堂 | 高潮无码精品色欲av午夜福利 | 婷婷久久伊人 | 中国少妇无码专区 | 特级少妇 | 男人的天堂色偷偷 | 一级欧美一级日韩片 | 久久久久久久久久久综合 | 超碰网址| 狼人av在线 | 情侣av| 国产精品乱码一区 | 亚洲无吗一区二区三区 | 人体裸体bbbbb欣赏 | 久久国产美女视频 | 男生坤坤放进女生坤坤里 | 日本欧美日韩 | 一级大片免费 | 日韩人妻一区二区三区蜜桃 | 成人久久久| 亚洲成人网在线 | 狠狠干2024| 高清乱码免费网 | 日本在线观看一区 | 国产真实交换夫妇视频 | 999热视频| 99免费在线 | 女女互磨互喷水高潮les呻吟 | 久久综合影视 | 一级片免费的 | 中文字幕日韩欧美 | 亚洲av无码一区二区三区在线播放 | 国产大奶在线 | 亚洲v欧美| 男人av网站 | 一区二区三区福利视频 | 国产日韩久久 | 黑丝袜av | www色com| 台湾佬综合网 | 国产成人无码一区二区在线观看 | 久久911| 99久久99久久精品国产片果冰 | 精品福利视频导航 | 国产精品久久久久久久久久久久久久久久 | 欧美中文字幕一区 | 窝窝视频在线 | 日韩伦理av| 双性皇帝高h喷汁呻吟 | 4438x全国最大成人 | 国产精品高清无码在线观看 | 狠狠撸视频 | 疯狂做受xxxx高潮人妖 | 日日夜夜天天 | 欧美三区视频 | 狠狠2020| 那里可以看毛片 | 少妇高潮毛片色欲ava片 | 1000部啪啪未满十八勿入 | 亚洲一级二级片 | 久久鲁鲁 | 日韩视频一区二区三区 | 国产视频一区二区不卡 | 日本美女日批视频 | 精品一二三区 | 欧美成人国产va精品日本一级 | 在线观看免费视频 | 国产欧美一区二区三区国产幕精品 | 欧美午夜精品一区二区三区电影 | 国产精品九色 | 受虐m奴xxx在线观看 | 99久久99久久精品国产片果冻 | 国产精品白虎 | xxx久久 | 亚洲高清在线 | 性做久久久久久 | 一级片大片 | 天天在线观看 | 国产一区二区网站 | 美国免费高清电影在线观看 | 午夜天堂网|