WebApp快捷打包
文件系统
转到模块插件

敬告:此 DEMO 演示为开放测试页面,仅用于开发者快速测试体验应用功能,请严格遵守开发者协议,了解更多

JS-SDK 引用方式:

♦ 普通网页 script 方式加载:下载最新版 jsBridge-v20240925.zip,请在页面上调用 jsBridge 接口之前引用 jsbridge-mini.js 库;

♦ js module 方式引用:npm install ym-jsbridge 具体请参考 npm package

♦ APP端文件及目录管理;

♦ 提供本地文件/目录/下载/解压/哈希/分享/打开等操作接口;

♦ 本地文件路径规则:fs://{MainDirectory}/YourPath

仅允许如下两个主目录:
一般文件目录 fs://file/YourPath
缓存文件目录 fs://cache/YourPath

mkdir 创建目录

jsBridge.fs.mkdir("fs://file/my_dir/", function(succ, msg){
  alert(succ ? "创建成功" : msg);
});

exist 文件或目录是否存在:示例一

jsBridge.fs.exist("fs://file/my_dir/", function(succ, msg){
  alert(succ ? "存在" : "不存在");
});

exist 文件或目录是否存在:示例二

jsBridge.fs.exist("fs://file/my_dir/my.txt", function(succ, msg){
  alert(succ ? "存在" : "不存在");
});

list 列出目录下的文件和子目录:示例一

• 回调参数 data 中以斜杠 / 结束的是子目录,否则是文件。

jsBridge.fs.list("fs://file/", function(succ, data) {
  alert("succ:" + succ + "\n" + JSON.stringify(data));
});

list 列出目录下的文件和子目录:示例二

• 回调参数 data 中以斜杠 / 结束的是子目录,否则是文件。

jsBridge.fs.list("fs://file/my_dir/", function(succ, data) {
  alert("succ:" + succ + "\n" + JSON.stringify(data));
});

size 获取文件大小(byte)

• 如果文件不存在则返回 0

jsBridge.fs.size("fs://file/my_dir/my.txt", function(succ, data) {
  alert("succ:" + succ + "\n" + data);
});

delete 删除目录或文件

• 如果指定的是目录,则会删除此目录及其目录下的所有文件。

jsBridge.fs.delete("fs://file/my_dir/", function(succ, msg) {
  alert(succ ? "删除成功" : msg);
});

writeText 写入 UTF8 文本内容

file:

jsBridge.fs.writeText(
  //文件路径,不存在则创建,已存在则覆盖
  "{{text.file}}",
  //文本内容(UTF8编码)
  "Hello world!\n你好,世界!",
  //回调
  function(succ, msg) {
    alert(succ ? "写入成功" : msg);
  }
);

appendText 追加 UTF8 文本内容

file:

jsBridge.fs.appendText(
  //文件路径,不存在则创建,已存在则追加到文件末尾
  "{{text.file}}",
  //文本内容(UTF8编码)
  "\n这是追加的文本...",
  //回调
  function(succ, msg) {
    alert(succ ? "追加成功" : msg);
  }
);

readText 读取文本文件

file:

jsBridge.fs.readText("{{text.file}}", function(succ, data) {
  alert("succ:" + succ + "\n" + data);
});

writeBinary 写入二进制内容

file:

jsBridge.fs.writeBinary(
  //文件路径,不存在则创建,已存在则覆盖
  "{{bin.file}}",
  //二进制的Base64编码串(这是一张 png 图片)
  "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",
  //回调
  function(succ, msg) {
    alert(succ ? "写入成功" : msg);
  }
);

appendBinary 追加二进制内容

file:

jsBridge.fs.appendBinary(
  //文件路径,不存在则创建,已存在则追加到文件末尾
  "fs://file/my_dir/my.bin",
  //二进制的Base64编码串
  "XG7ov5nmmK/ov73liqDnmoTmlofmnKwuLi4=",
  //回调
  function(succ, msg) {
    alert(succ ? "追加成功" : msg);
  }
);

readBinary 读取二进制文件

file:

jsBridge.fs.readBinary("{{bin.file}}", function(succ, data) {
  //data参数返回Base64串,请自行转码
  alert("succ:" + succ + "\n" + data);
});

copy 复制文件

jsBridge.fs.copy(
  //源文件
  "fs://file/my_dir/my.txt",
  //复制为目标文件
  "fs://file/my_dir/my_copy.txt",
  //回调
  function(succ, msg) {
    alert(succ ? "复制成功" : msg);
  }
);

toUri 转换文件路径为本地 URI 路径

• 转换为 file:///... 形式

jsBridge.fs.toUri("fs://file/my_dir/www/index.html", function(succ, data) {
  alert("succ:" + succ + "\n" + data);
});

toAbsolute 转换文件路径为本地绝对路径

jsBridge.fs.toAbsolute("fs://file/my_dir/my.txt", function(succ, data) {
  alert("succ:" + succ + "\n" + data);
});

share 分享文件(调用系统分享功能):示例一

file:

jsBridge.fs.share("{{share1.file}}", function(succ, msg) {
  if (!succ) {
    alert(msg);
  }
});

share 分享文件(调用系统分享功能):示例二

jsBridge.fs.share("fs://file/my_dir/love.png", function(succ, msg) {
  if (!succ) {
    alert(msg);
  }
});

open 打开文件(调用系统打开功能)

jsBridge.fs.open("fs://file/my_dir/my.txt", function(succ, msg) {
  if (!succ) {
    alert(msg);
  }
});

download 下载文件

• 记录文件下载状态,已下载的可以避免重复下载;

• 支持断点续传;

• 支持下载完成后自动打开文件;

url:

path:

force:

autoOpen:

jsBridge.fs.download({
  //GET请求的网络链接
  url     : "{{download1.url}}",
  //下载保存到本地文件
  path    : "{{download1.path}}",
  //如果文件已经下载过了,是否强制重新下载,默认false (仅安卓)
  //true  时重新下载文件
  //false 时不重新下载
  force   : {{download1.force}},
  //下载完成后是否自动打开文件,默认 false (仅安卓)
  autoOpen: {{download1.autoOpen}},
  //下载进度回调
  progress: function(total, loaded) {
      console.log("共" + total + "字节,已下载" + loaded);
    }
  },
  //下载结束回调
  function(succ, msg) {
    alert(succ ? "下载成功" : msg);
  }
);

download 下载文件 - 不管本地是否存在始终强制下载

url:

path:

jsBridge.fs.download({
  //GET请求的网络链接
  url     : "{{download2.url}}",
  //下载保存到本地文件
  path    : "{{download2.path}}",
  //true 始终下载,false 如果已经下载过了就不再下载
  force   : true,
  //下载进度回调
  progress: function(total, loaded) {
      console.log("共" + total + "字节,已下载" + loaded);
    }
  },
  //下载结束回调
  function(succ, msg) {
    alert(succ ? "下载成功" : msg);
  }
);

download 下载完成后调用系统软件自动打开

jsBridge.fs.download({
  //GET请求的网络链接
  url     : "https://www.yimenapp.net/doc/doc.pdf",
  //下载保存到本地文件
  path    : "fs://file/my_dir/doc.pdf",
  //下载完成是否自动打开文件,默认 false (仅安卓)
  autoOpen: true,
  //下载进度回调
  progress: function(total, loaded) {
      console.log("共" + total + "字节,已下载" + loaded);
    }
  },
  //下载结束回调
  function(succ, msg) {
    if (!succ) {
      alert("下载失败:" + msg);
    }
  }
);

download 下载完成后调用文档阅读器打开

var url = "https://www.yimenapp.net/doc/doc.pdf";
var path = "fs://file/my_dir/doc.pdf";
jsBridge.fs.exist(path, function(succ, msg){
  if (succ) {
    //使用 文档阅读器 插件打开
    jsBridge.txDoc.open({
        file: path
    });
  } else {
    alert("本地文件不存在,准备下载。");
    jsBridge.fs.download({
        //GET请求的网络链接
        url     : url,
        //下载保存到本地文件
        path    : path,
        //下载进度回调
        progress: function(total, loaded) {
          console.log("共" + total + "字节,已下载" + loaded);
        }
      },
      //下载结束回调
      function(succ, msg) {
        if (succ) {
          alert("下载完成,准备打开。");
          jsBridge.txDoc.open({
              file: path
          });
        } else {
          alert("下载失败:" + msg);
        }
      }
    );
  }
});

download 下载一个视频,完成后播放

var url = "http://1252463788.vod2.myqcloud.com/95576ef5vodtransgzp1252463788/e1ab85305285890781763144364/v.f10.mp4";
var path = "fs://file/my_dir/f10.mp4";
jsBridge.fs.exist(path, function(succ, msg){
  if (succ) {
    //使用 超级播放器 插件原生播放本地视频
    jsBridge.txVideo.play(path);
  } else {
    alert("本地文件不存在,准备下载。");
    jsBridge.fs.download({
        //GET请求的网络链接
        url     : url,
        //下载保存到本地文件
        path    : path,
        //下载进度回调
        progress: function(total, loaded) {
          console.log("共" + total + "字节,已下载" + loaded);
        }
      },
      //下载结束回调
      function(succ, msg) {
        if (succ) {
          alert("下载完成,准备播放。");
          jsBridge.txVideo.play(path);
        } else {
          alert("下载失败:" + msg);
        }
      }
    );
  }
});

unzip 解压 zip 文件

jsBridge.fs.download({
  //下载链接
  url : "https://www.yimenapp.net/doc/www.zip",
  //保存为
  path: "fs://file/my_dir/www.zip"
}, function(succ, msg) {
  if (succ) {
    alert("下载成功");
    //解压
    jsBridge.fs.unzip({
      //要解压的 zip 文件
      src: "fs://file/my_dir/www.zip",
      //解压到哪个目录
      dst: "fs://file/my_dir/",
      //密码
      pwd: ""
    }, function(succ, msg) {
       alert(succ ? "解压成功" : msg);
    });
  } else {
    alert("下载失败" + msg);
  }
});

unzip 解压密码保护的 zip 文件

jsBridge.fs.download({
  url : "https://www.yimenapp.net/doc/www-with-password.zip",
  path: "fs://file/my_dir/www-with-password.zip"
}, function(succ, msg) {
  if (succ) {
    alert("下载成功");
    //解压
    jsBridge.fs.unzip({
      //要解压的 zip 文件
      src: "fs://file/my_dir/www-with-password.zip",
      //解压到哪个目录
      dst: "fs://file/my_dir/",
      //密码
      pwd: "123456"
    }, function(succ, msg) {
       alert(succ ? "解压成功" : msg);
    });
  } else {
    alert("下载失败" + msg);
  }
});

list 查看解压出来的目录

jsBridge.fs.list("fs://file/my_dir/www/", function(succ, data) {
  alert("succ:" + succ + "\n" + JSON.stringify(data));
});

md5 MD5 哈希值

• 计算文件 MD5 哈希值

jsBridge.fs.md5("fs://file/my_dir/doc.pdf", function(succ, data) {
  alert("succ:" + succ + "\n" + data);
});

sha1 SHA1 哈希值

• 计算文件 SHA1 哈希值

jsBridge.fs.sha1("fs://file/my_dir/doc.pdf", function(succ, data) {
  alert("succ:" + succ + "\n" + data);
});

sha256 SHA256 哈希值

• 计算文件 SHA256 哈希值

jsBridge.fs.sha256("fs://file/my_dir/doc.pdf", function(succ, data) {
  alert("succ:" + succ + "\n" + data);
});