YdbOpen說明文檔
概述
YdbOpen通過JS遠程的打開、關閉、創建、修改APP本地SqlLite數據庫的任何一處,助力您開發出更優秀的APP。
通過JS遠程的增删改查本地文件。通過使用遠程下載功能,您可以随時随地将您需要的文件下載到您所需要的APP本地。
此文檔面向網頁開發者介紹YdbOpen如何使用及相(xiàng)關注意事項,需要注意的是(shì)必須開啓雲開發插件之後,YdbOpen裏的方法才會生效。
YdbOpen使用步驟
步驟一:引入JS文件
在需要調用JS接口的頁面引入如下JS文件,:static/js/YdbOpen.js
步驟二:調用YdbOpen的相(xiàng)關方法
例如: /* YdbOpen跨域寫法 */
YdbOpen.call("ajax", {
url: '你的url地址',
method: 'POST',
data: { UserName: nameObj.val(), UserKey: pwdObj.val() },
file: { HeadImg: headObj.val(), CardImg: cardObj.val() },
cache: false,
timeout: 30,
dataType: 'json'
}, function (ret, err) {
if (ret) {
layer.open({
content: JSON.stringify(ret),
btn: ['确定']
});
} else {
layer.open({
content: '錯誤碼:' + err.code + ';錯誤信息:' + err.msg + '網絡狀态碼:' + err.statuscode,
btn: ['确定']
});
};
});
//特别說明:YdbOpen的調用要放(fàng)到頁面尾部,或者放(fàng)入頁面加載完事件中
//方法一:jquery 中:$(function(){} 括号内寫你的内容
//方法二:使用body的onload屬性,onload='someFunctionsWithYdbOpen()'
//方法三:window.onload=function(){//someFunctionsDoWithYdbOpen}//用window的onload事件,窗體加載完畢的時候
接口調用說明
跨域訪問 ajax
/* 示例 */
YdbOpen.call("ajax", {
url: '你的url地址',
method: 'POST',
data: { UserName: nameObj.val(), UserKey: pwdObj.val() },
file: { HeadImg: headObj.val(), CardImg: cardObj.val() },
cache: false,
timeout: 30,
dataType: 'json'
}, function (ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert('錯誤碼:' + err.code + ';錯誤信息:' + err.msg + '網絡狀态碼:' + err.statuscode);
};
});
//參數說明:輸入參數:json對象
參數
|
類型
|
解釋
|
url
|
字符型
|
跨域訪問的接口地址
|
method
|
字符型
|
訪問類型,如GET,POST,DELETE,PUT等
|
data
|
Object
|
提交的鍵值對如{UserName:"qike",PassWord:"1234"}
|
file
|
Object
|
多文件上傳的鍵值對如{HeadImg:"xxx"},可省略
|
Cache
|
布爾型
|
默認false,可省略
|
timeout
|
整型
|
超時時間,默認30秒,可省略
|
datatype
|
字符型
|
Json,xml,text等
|
//輸出參數:
參數
|
類型
|
解釋
|
ret
|
不定
|
根據DataType類型而定
|
err
|
json
|
{code:1,msg:"操作成功",statuscode:200}
|
數據庫操作類
數據庫創建打開接口 dbopen
/* 示例 */
YdbOpen.call("dbopen", dbname, function (ret) {
if (ret.status) {
alert(ret.msg);
} else {
alert(ret.msg);
}
});
// 說明:輸入參數:dbname,如 "weblsq.db"。根據Sqlite庫名稱判斷,有則打開,無則創建;
//返回結果:{status: true/false,msg:"結果描述或錯誤原因" }
數據庫關閉接口 dbclose
/* 示例 */說明:關閉數據庫;
YdbOpen.call("dbclose", "dbname", function (ret) {
if (ret.status) {
alert(ret.msg);
} else {
alert(ret.msg);
}
});
// 參數說明: 輸入參數: 數據庫名 dbname,如 "weblsq.db"。
//返回結果:{status: true/false,msg:"結果描述或錯誤原因" }
判斷表是(shì)否存在 tabexist
/* 示例 */
YdbOpen.call("tabexist", "name", function (ret) {
if (ret.status) {
alert("表名:" + name + "已存在"+ret.msg);
} else {
}
});
// 參數說明:輸入參數:字符型 表名,如tbUserinfo;
//返回結果:{status: true/false,msg:"結果描述或錯誤原因" }
執行SQL語句 execsql
/* 示例 */
var createSql = "create table tbname(id integer,title varchar,content text,time varchar)";
YdbOpen.call("execsql", sqlStr ,function(ret) {
if (!ret.status) {
alert(ret.msg);
}
});
// 參數說明:輸入參數:字符型,待執行的SQL語句;
//返回結果:{status: true/false,msg:"結果描述或錯誤原因" }
查詢SQL語句 query
/* 示例 */
var querySql = "select * from tbname";
YdbOpen.call("query", querySql, function (ret) {
if (ret.status) {
var str = ret.msg;
if (ret.data.length > 0) {
for (var i = 0; i < ret.data.length; i++) {
str += "" + ret.data[i].title + "" + ret.data[i].time + "";
}
} else {
str = "該表中暫無數據";
}
}
});
// 參數說明:輸入參數:字符型,待查詢的SQL語句;
//返回結果:{ status: true/false,data:[數據集json數據,....],msg:"結果描述或錯誤原因" }
文件及文件夾操作
文件夾操作
文件夾是(shì)否存在 direxist
/* 示例 */
YdbOpen.call("direxist", dir, function (ret) {
if (ret.status) {
alert("文件夾【" + dir + "】已存在:"+ret.msg);
} else {
}
});
//輸入參數:dir 字符型,文件夾名稱,可以含多級,如“abc","abc\def\xyz";
//返回結果:{ status: true/false,msg:"結果描述或錯誤原因" }
創建文件夾 mkdir
/* 示例 */
YdbOpen.call("mkdir", dir, function (ret1) {
if (ret1.status) {
alert("文件夾[" + dir + "]創建成功!"+ret1.msg);
}
});
// 輸入參數:dir 字符型,待創建的文件夾名稱,可以含有多級路徑;
//返回結果:{ status: true/false,msg:"結果描述或錯誤原因" }
删除文件夾 deletedir
//ret:{status:true/false}
//異常情況,文件正在使用,文件夾不存在
/* 示例 */
YdbOpen.call("deldir", dir, function (ret) {
if (ret.status) {
alert(ret.msg);
} else {
alert(ret.msg);
}
});
//參數說明:輸入參數:dir 字符型,文件夾内容,可以含多級路徑,如“dira”,“a\b\c\d”,“a”;
//返回結果: { status: true/false,msg:"結果描述或錯誤原因" }
文件夾命名 rendir
var newDir = "Srcddd";
//src,trg不能在同一文件夾
//異常:文件夾不存在,文件夾相(xiàng)同
/* 示例 */
YdbOpen.call("rendir", { src: dirA, trg: newDir }, function (ret) {
if (ret.status) {
alert(ret.msg);
} else {
alert(ret.msg);
}
});
//參數說明:輸入參數:{src:源路徑,trg:目标路徑}
//返回結果:{ status: true/false,msg:"結果描述或錯誤原因" }
獲取知(zhī)道文件夾中内容列表 readdir
//ret: {status:true/false,data:[{Name:"a.txt",IsDir:false,ModifyDate:"2015-10-17 12:59:38",FileSize:0.85<单位m>},....]}
//異常信息可能文件夾不存在或文件夾不是(shì)文件夾
/* 示例 */
YdbOpen.call("readdir", { path: dirA, filetype: "*.*" }, function (ret) {
if (ret.status) {
var srcHtml = ret.msg;
if (ret.data.length > 0) {
for (var i = 0; i < ret.data.length; i++) {
srcHtml += ret.data[i].Name + " " + ret.data[i].IsDir + " " + ret.data[i].ModifyDate + " " + ret.data[i].FileSize;
}
}
alert("文件夹列表:\n\n" + srcHtml);
} else {
alert(ret.msg);
}
});
//输入参数:{ "Path": dirA, "FileType": "*.*" }
參數
|
類型
|
注釋
|
Path
|
字符型
|
源文件夾名稱
|
FileType
|
字符型
|
文件類型,可選 默認 *.*
|
//返回結果:{status:true/false,data:[{name:"文件名",isdir:true,modifydate:"2015-10-21 12:00:900",filesize:0.5},..],msg:"獲取成功"}
//返回參數說明:
參數
|
類型
|
注釋
|
name
|
字符型
|
文件或文件夾名稱
|
isdir
|
布爾型
|
标識Name對應的是(shì)否爲文件夾
|
modifydate
|
字符型
|
标識文件修改時間
|
filesize
|
浮點型
|
标識文件大小單位M,文件夾爲0
|
单位m>
文件操作
文件是(shì)否存在 fileexist
/* 示例 */
YdbOpen.call("fileexist", fname, function (ret) {
if (ret.status) {
//ret: {status:true/false,content:"文件内容"}
} else {
alert(ret.msg);
}
});
// 輸入參數:fname 字符型,文件夾+文件名或文件名;
//返回結果:{ status: true/false,msg:"結果描述或錯誤原因" }
創建文件 createfile
/* 示例 */
YdbOpen.call("createfile", { path: fname, default: "這是(shì)文件默認内容", encoding: "UTF-8" }, function (ret1) {
if (ret1.status) {
alert("文件:" + fname + ",創建成功!" +ret1.msg);
} else {
alert(ret1.msg);
}
});
//輸入參數:Json對象;
參數
|
類型
|
注釋
|
path
|
字符型
|
待創建的文件路徑,如“A/qike.txt”
|
default
|
字符型
|
默認的文件内容;可空,如“”/“這是(shì)文件内容”
|
encoding
|
字符型
|
标識文件編碼;可空,默認爲UTF-8,可以爲GBK,GB2312,Utf-8
|
//返回結果:{ status: true/false,msg:"結果描述或錯誤原因" }
删除文件 deletefile
/* 示例 */
YdbOpen.call("delfile", file, function (ret) {
if (ret.status) {
alert(ret.msg);
} else {
alert(ret.msg);
}
});
// 參數說明:輸入參數:字符型,标識文件名,如“aa.Txt”,“dira\a.Txt”;
//返回結果: { status: true/false,msg:"結果描述或錯誤原因" }
文件命名 renfile
/* 示例 */
var fname = dirA + "/" + fileName;
var foname = dirA + "/" + "qike.lst";
//src,trg需在同一文件夾
//異常:文件不存在,文件正在使用,不在同一文件夾
YdbOpen.call("renfile", { src: fname, trg: foname }, function (ret) {
if (ret.status) {
alert(ret.msg);
} else {
alert(ret.msg);
}
});
// 輸入參數:{src:源路徑,trg:目标路徑}
//返回結果:{ status: true/false,msg:"結果描述或錯誤原因" }
獲取指定文件内容 readalltext
/* 示例 */
YdbOpen.call("readalltext", { filepath: fname, encoding: "UTF-8" }, function (ret1) {
if (ret1.status) {
alert(ret1.content+":"+ret1.msg);
}
});
//參數說明:輸入參數:{filepath:文件名,encoding:"UTF-8"}
參數
|
類型
|
注釋
|
filepath
|
字符型
|
文件名稱
|
encoding
|
字符型
|
文件編碼,可選 默認 UTF-8,可以爲GBK,GB2312,UTF-8
|
//返回結果:{status:true/false,count:"文件内容",msg:"結果描述"}
寫入内容到指定文件 writealltext
var fname = dirA + "/" + fileName;
//覆蓋式寫入
/* 示例 */
YdbOpen.call("writealltext", { filepath: fname, filecontent: "這是(shì)寫入的全部内容!!\n\r", encoding: "UTF-8" }, function (ret) {
if (ret.status) {
alert(ret.msg);
} else {
alert(ret.msg);
}
});
//輸入參數:{ filepath: fname, filecontent: "内容!!", encoding:"UTF-8" }
參數
|
類型
|
注釋
|
filepath
|
字符型
|
文件名稱
|
encoding
|
字符型
|
文件編碼,可選 默認 UTF-8,可以爲GBK,GB2312,UTF-8
|
filecontent
|
字符型
|
待寫入的文件内容
|
//返回結果:{status:true/false,msg:"結果描述"} 字符型,爲文件内容,異常或失敗則爲空;
說明:文件不存在是(shì)則自動創建,存在則覆蓋;
追加文件内容 appendtext
/* 示例 */
YdbOpen.call("appendtext", { filepath: fname, appendtext: "這是(shì)追加的内容!!\n\r" ,encoding: "UTF-8"}, function (ret2) {
if (ret2.status) {
alert(ret2.msg);
}
});
//輸入參數:{ filepath: fname, appendtext: "追加的内容!!" ,encoding: "UTF-8"}
參數
|
類型
|
注釋
|
filepath
|
字符型
|
文件名稱
|
appendtext
|
字符型
|
待追加的内容
|
encoding
|
編碼
|
UTF-8、GBK、GB2312
|
//返回結果: {status:true/false,msg:"結果描述"}
文件下載 download
//ret: {status:true/false,filename:"本地物理路徑file:///"}
//異常信息可能鏈接不存在,或下載終端,網絡異常等
/* 示例 */
YdbOpen.call("download", {
url: '要下載的文件路徑',
trgname: dirB
}, function (ret, err) {
if (ret.status) {
alert("下載成功:" + ret.fileName);
} else {
alert(err.msg);
}
});
//輸入參數:{url:"要下載的文件路徑",trgname:"下載後的路徑及名稱"}
參數
|
類型
|
注釋
|
url
|
字符型
|
待下載路徑
|
trgname
|
字符型
|
下載後的名稱和路徑
|
返回結果:兩個參數,ret,err
Ret {status:true/false,filename:"保存後的物理路徑",msg:"結果描述"}
參數
|
類型
|
注釋
|
status
|
整型
|
1、成功;0、失敗
|
fileName
|
字符型
|
下載後的物理路徑名稱
|
Err:{code:1,msg:"操作成功",statuscode:200}
參數
|
類型
|
注釋
|
code
|
整型
|
1、成功;0、失敗
|
msg
|
字符型
|
結果描述
|
statuscode
|
整型
|
網絡狀态碼
|
文件夾或文件複制 copyto
//覆蓋式拷貝
//ret:{status:true/false}
//異常:可能文件不存在、目标文件正在使用等;
/* 示例 */
YdbOpen.call("copyto", { src: fsrc, trg: ftrg }, function (ret) {
if (ret.status) {
alert("文件" + fsrc + "拷貝到" + ftrg + "成功::" + ret.msg);
} else {
alert(ret.msg);
}
});
// 參數說明:輸入參數:{src:源路徑,trg:目标路徑}
//返回結果:{ status: true/false,msg:"結果描述或錯誤原因" }
文件夾或文件移動 moveto
var fonamd = dirA + "/" + "qiqp.lst";
var fTrg = dirB + "/" + "qq.dat";
//文件移動等于:複制+删除源文件
//異常信息可能文件不存在或正在使用
/* 示例 */
YdbOpen.call("moveto", { src: fonamd, trg: fTrg }, function (ret) {
if (ret.status) {
alert("文件" + fonamd + "移到" + fTrg + "成功::" + ret.msg);
} else {
alert(ret.msg);
}
});
//輸入參數:{src:源路徑,trg:目标路徑}
//返回結果:{ status: true/false,msg:"結果描述或錯誤原因" }
// 注釋:MoveTo等于Copy + delete;
将相(xiàng)對路徑轉換成絕對路徑 relpath2abspath
//ret: {status:true/false,path:"file:///xxx"}
/* 示例 */
YdbOpen.call("relpath2abspath", dirA, function (ret) {
if (ret.status) {
alert("SrcDir:[" + dirA + "]AbsPath:[" + ret.path + "]msg:["+ret.msg+"]");
} else {
alert(ret.msg);
}
});
//輸入參數:字符型 ,标識文件夾或文件名;
//說明:支持文件夾和文件;
//返回結果:{status:true/false,path:"對應的物理路徑",msg:"結果描述"}
壓縮文件 zip
//文件壓縮: 參數 Files可換成 FileType:"*.lst",若同時存在則 FileType優先級高
//ret:{status:true/false}
/* 示例 */
YdbOpen.call("zip", { dirname: dirA, files: ["weblsq.lst", "qiqi.lst"], targetname: "weblsq.zip" }, function (ret) {
if (ret.status) {
alert(ret.msg);
} else {
alert(ret.msg);
}
});
//輸入參數:{ dirname: dirA, files: ["weblsq.lst", "qiqi.lst"], targetname: "weblsq.zip" }
參數
|
類型
|
注釋
|
dirname
|
字符型
|
文件夾名稱
|
files
|
數組型
|
待壓縮的文件列表
|
filetype
|
字符型
|
文件過濾支持多個,如“*.Txt”,“*.Txt;*.Log;*.pdf”
|
PassWord
|
字符型
|
壓縮包密碼,可選
|
targetname
|
字符型
|
标識壓縮後文件的存放(fàng)位置可爲文件夾名或文件夾+文件名
|
//說明:files和filetype互斥,filetype優先;
//返回結果:{status:true/false,msg:"結果描述"}
解壓文件 unzip
/* 示例 */
YdbOpen.call("unzip", { fileName: zipFile,trgdir: trgDir }, function (ret) {
if (ret.status) {
alert(ret.msg +":"+ret.abspath);
} else {
alert("zip解壓失敗:"+ret.msg);
}
});
//輸入參數:{ filename: zipFile, password: "12345", trgdir: trgDir }
參數
|
類型
|
注釋
|
filename
|
字符型
|
Zip文件名稱
|
PassWord
|
數組型
|
壓縮包密碼,可選
|
trgdir
|
字符型
|
解壓路徑,爲文件夾,不空
|
返回結果:{status:true/false,abspath:"解壓後的物理路徑",msg:"結果描述"}
判斷網絡此刻狀态 netstate
/* 示例 */
YdbOpen.call("netstate", null, function (ret) {
if (ret.status) {
var msg = "wifi 不可用";
switch (ret.state) {
case 0:
msg = "wifi 不可用";
break;
case 1:
msg = "wifi 可用";
break;
case 2:
msg = "gprs 不可用";
break;
case 3:
msg = "gprs 可用";
break;
}
alert("state:[" + msg + "]msg:["+ret.msg+"]");
} else {
alert(ret.msg);
}
});
//輸入參數:無;
//返回結果:{status:true/false, state:狀态碼, msg:"結果描述"}
狀态碼說明:
-1:默認值 status爲false時
0:wifi 不可用
1:wifi 可用
2:gprs 不可用
3:gprs 可用
問題反饋
郵箱地址:3348388407@qq.com
郵件主題:【YdbOpen反饋】
郵件内容說明:
用簡明的語言描述問題所在,并講清楚遇到該問題的場景,可附上截屏圖片,我們團隊會盡快處理你的反饋。