ydbopen说明文档
概述
ydbopen通过js远程的打开、关闭、创建、修改app本地sqllite数据库的任何一处,助力您开发出更优秀的app。
通过js远程的增删改查本地文件。通过使用远程下载功能,您可以随时随地将您需要的文件下载到您所需要的app本地。
此文档面向网页开发者介绍ydbopen如何使用及相关注意事项,需要注意的是必须开启云开发插件之后,ydbopen里的方法才会生效。
ydbopen使用步骤
步骤一:引入js文件
在需要调用js接口的页面引入如下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 可用
问题反馈
邮箱地址:[email protected]
邮件主题:【ydbopen反馈】
邮件内容说明:
用简明的语言描述问题所在,并讲清楚遇到该问题的场景,可附上截屏图片,我们团队会尽快处理你的反馈。