YdbOpen说明文档
概述
YdbOpen通过JS远程的打开、关闭、创建、修改APP本地SqlLite数据库的任何一处,助力您开发出更优秀的APP。
通过JS远程的增删改查本地文件。通过使用远程下载功能,您可以随时随地将您需要的文件下载到您所需要的APP本地。
此文档面向网页开发者介绍YdbOpen如何使用及相关注意事项,需要注意的是必须开启云开发插件之后,YdbOpen里的方法才会生效。
YdbOpen使用步骤
步骤一:引入JS文件
在需要调用JS接口的页面引入如下JS文件,:http://static.ydbimg.com/API/YdbOpen.js
步骤二:调用YdbOpen的相关方法
例如: /* 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的调用要放到页面尾部,或者放入页面加载完事件中
//方法一: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:"结果描述或错误原因" }
判断表是否存在 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:"结果描述或错误原因" }
文件及文件夹操作
文件夹操作
文件夹是否存在 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不能在同一文件夹
//异常:文件夹不存在,文件夹相同
/* 示例 */
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:"结果描述或错误原因" }
获取知道文件夹中内容列表 readdir
//ret: {status:true/false,data:[{Name:"a.txt",IsDir:false,ModifyDate:"2015-10-17 12:59:38",FileSize:0.85<单位m>},....]}
//异常信息可能文件夹不存在或文件夹不是文件夹
/* 示例 */
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对应的是否为文件夹
|
modifydate
|
字符型
|
标识文件修改时间
|
filesize
|
浮点型
|
标识文件大小单位M,文件夹为0
|
文件操作
文件是否存在 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: "这是文件默认内容", encoding: "UTF-8" }, function (ret1) {
if (ret1.status) {
alert("文件:" + fname + ",创建成功!" +ret1.msg);
} else {
alert(ret1.msg);
}
});
//输入参数:Json对象;
参数
|
类型
|
注释
|
path
|
字符型
|
待创建的文件路径,如“A/qike.txt”
|
default
|
字符型
|
默认的文件内容;可空,如“”/“这是文件内容”
|
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: "这是写入的全部内容!!\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:"结果描述"} 字符型,为文件内容,异常或失败则为空;
说明:文件不存在是则自动创建,存在则覆盖;
追加文件内容 appendtext
/* 示例 */
YdbOpen.call("appendtext", { filepath: fname, appendtext: "这是追加的内容!!\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;
将相对路径转换成绝对路径 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
|
字符型
|
标识压缩后文件的存放位置可为文件夹名或文件夹+文件名
|
//说明: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反馈】
邮件内容说明:
用简明的语言描述问题所在,并讲清楚遇到该问题的场景,可附上截屏图片,我们团队会尽快处理你的反馈。