例子


/** 坚果云 */
let Jgy = JianGuoYunHelper();
// 初始化
Jgy.init("username", "password", "坚果云测试_数据备份");
// 文件名
Jgy.setThisFileName("测试文件");// 上传数据 (覆盖)
let putRes = Jgy.put("测试数据 测试数据 测试数据");
// 获取数据
let remoteData = Jgy.get();

Helper

/*** 坚果云文本文件 上传/下载*/
function JianGuoYunHelper() {/*** 坚果云SDK*/function JgySDK() {}/*** 初始化* @param {*} username* @param {*} password* @param {*} folderName 操作的文件夹名称*/JgySDK.prototype.init = function (username, password, folderName) {this.folderName = folderName;this.jgyHost = "http://dav.jianguoyun.com/dav/" + this.folderName + "/";this.key = this.getBase64(username + ":" + password);this.header = {Authorization: "Basic " + this.key,"Content-Type": "text/plain;charset=UTF-8",Connection: "Keep-Alive","Accept-Encoding": "gzip","User-Agent": "okhttp/3.12.1",};this.fileName = "";this.createFolder();};/*** 设置 操作的fileName, 之后的方法不再需要传 fileName* @param {string} fileName* @param {string?} fileExtension 可空, 默认 "txt"*/JgySDK.prototype.setThisFileName = function (fileName, fileExtension) {if (fileExtension == void 0) {fileExtension = "txt";}this.fileName = fileName + "." + fileExtension;};/*** 读取文件夹的目录* @returns {string[]}*/JgySDK.prototype.getFolderCatalog = function () {let httpRes = http.request(this.jgyHost, {method: "PROPFIND",headers: this.header,});let resArr = [];let xmlData = httpRes.body.string();if (xmlData) {let dataArr = xmlData.match(/<d:displayname>(.*?)<\/d:displayname>/g);for (let item of dataArr) {item = item.replace("<d:displayname>", "").replace("</d:displayname>", "");if (item != this.folderName) {resArr.push(item);}}}return resArr;};/*** 创建文件夹** @private 私有方法* @returns {boolean}*/JgySDK.prototype.createFolder = function () {let httpRes = http.request(this.jgyHost, {method: "MKCOL",headers: this.header,});return httpRes.statusCode == 201;};/*** 获取thisFileName* @private 私有方法* @param {string} fileName* @returns {string}*/JgySDK.prototype.getThisFileName = function (fileName) {if (fileName == void 0) {if (this.fileName != "") {fileName = this.fileName;} else {throw "当前必须传fileName, 调用setThisFileName后,才可以不传fileName";}}return fileName;};/*** 删除一个文件* @param {string?} fileName 可空, 需要提前调用 setThisFileName*/JgySDK.prototype.delete = function (fileName) {let res = { res: false, msg: "删除失败" };try {fileName = this.getThisFileName(fileName);let fileArr = this.getFolderCatalog();if (fileArr.indexOf(fileName) > -1) {http.request(this.jgyHost + fileName, {method: "DELETE",headers: this.header,});fileArr = this.getFolderCatalog();if (fileArr.indexOf(fileName) < 0) {res.res = true;res.msg = "删除成功";} else {res.msg = "删除失败,文件依然在目录中";}} else {res.res = true;res.res = "文件不存在,无需删除";}} catch (error) {res.msg = error;}return res;};/*** 获取一个文件内容* @param {string?} fileName 可空, 需要提前调用 setThisFileName*/JgySDK.prototype.get = function (fileName) {let res = "";try {fileName = this.getThisFileName(fileName);let httpRes = http.get(this.jgyHost + fileName, {headers: this.header,});//log(httpRes);if (httpRes.statusCode == 404) {let strRes = httpRes.body.string();if (strRes.indexOf("doesn't exist") > -1) {let errorMsg = "无备份文件,文件名:" + fileName;toast(errorMsg);console.error(errorMsg);} else {throw strRes;}} else if (httpRes.statusCode == 200) {res = httpRes.body.string();} else {throw httpRes;}} catch (error) {console.error("JgySDK get error: " + error);}return res;};/*** 上传一个文件* @param {string} path* @param {string?} fileName 可空, 需要提前调用 setThisFileName*/JgySDK.prototype.put = function (data, fileName) {let res = { res: false, msg: "上传失败" };try {fileName = this.getThisFileName(fileName);let httpRes = http.request(this.jgyHost + fileName, {method: "PUT",headers: this.header,body: data,});let newdata = this.get(fileName);if (newdata == data) {res.res = true;res.msg = "本地数据 推送到 坚果云 成功";} else {res.msg = "数据推送失败,推送后网络数据与本次数据不同,result:" + httpRes.body.string();}} catch (error) {res.msg = error;}return res;};/*** 获取base64 结果* @private 私有方法* @param {string} str* @returns {string}*/JgySDK.prototype.getBase64 = function (str) {return java.lang.String(android.util.Base64.encode(java.lang.String(str).getBytes(), 2));};return new JgySDK();
}

Autojs: 坚果云文本文件上传/下载相关推荐

  1. 前端js华为云obs上传下载文件与进度条的设置

    前端js华为云obs上传下载文件与进度条的设置 首先下载OBS BrowserJS SDK安装包 用git将代码拉到本地 git clone https://github.com/huaweiclou ...

  2. 基于Java+hadoop网络云盘上传下载系统设计与实现

    目 录 网络云盘上传下载系统摘要----------------------------------5 The Network Cloud Disk`s Upload and DownloadAbst ...

  3. 阿里云OSS上传下载跨域问题

    OSS文件传输 使用OSS进行上传/下载操作时,时常会遇到跨域问题. 其表现为,直接通过浏览器,可以直接访问已经存储在OSS中得文件地址并下载,但是通过代码却会报跨域问题. 解决办法:登录阿里云OSS ...

  4. bpcs uploader.php,linux 百度云bpcs_uploader上传 下载 删除等操作

    百度云bpcs_uploader ------------------------------------------------------------------ 上传文件到百度云命令: 在bpc ...

  5. 腾讯云COS上传下载文件

    1.初始化COSClient import com.qcloud.cos.COSClient; import com.qcloud.cos.ClientConfig; import com.qclou ...

  6. 微信小程序文件云存储-上传下载删除功能

    文件云存储 云存储提供高可用.高稳定.强安全的云端存储服务,支持任意数量和形式的非结构化数据存储,如视频和图片,并在控制台进行可视化管理.云存储包含以下功能: 存储管理:支持文件夹,方便文件归类.支持 ...

  7. 阿里云OSS上传下载和短信验证码

    (一):首先得在阿里云OSS上开通相关的服务,具体哪里开通及如何操作请参考此链接: https://help.aliyun.com/document_detail/31883.html?spm=517 ...

  8. java集成华为云obs上传下载实战

    说明 最近项目上需要开发一个服务去和华为云OBS集成获取一些业务上的文件,此处记录一下简单的java集成obs的入门,希望对大家快速入门有所帮助:) 实现效果 上传对象 下载到本地 操作步骤 1.开通 ...

  9. 阿里云oss上传下载删除工具类

    工具类-阿里云oss private static String accessId;private static String accessKey;private static String endp ...

最新文章

  1. 阿里最强热修复:Sophix 超高速集成与踩坑
  2. echo向文件中写入
  3. 如果宁静是 Oracle,万茜、张雨绮、黄圣依是什么?
  4. 华为xs第几批升级鸿蒙,华为和荣耀老机型用户有福:确定能批量升级到鸿蒙系统!...
  5. path.join 和 path.resolve的区别
  6. 华为卡槽打不开怎么办_17500元!华为5G折叠手机刷屏,有人焦虑连夜开会…
  7. html5程序自动登录,Jtro的技术分享:网页调起unity的exe程序并自动登录
  8. android登陆的编写
  9. 基于JAVA+SpringBoot+Mybatis+MYSQL的在线动漫信息平台
  10. spark mlib行矩阵(RowMatrix)入门
  11. 使用Requests爬取网页图片并保存
  12. 创业吧,兄弟--记者眼中的中关村创业大街创业热潮纪实
  13. 蒙特卡罗方法(Monte Carlo)
  14. REST Assured 使用详解
  15. UHF RFID 读卡实验
  16. android:绘图
  17. 08蚂蚁-互联网安全架构——1.XSS攻击,SQL注入攻击,Http请求防盗链,CSRF请求攻击,忘记密码暴力破解,上传文件漏洞
  18. vivo分屏_Vivo手机怎么分屏,你知道吗?不会手机就白买了。
  19. mysql触发器不起作用_mysql – 授予模式触发器不起作用
  20. 将一个整数分解为质数的乘积的实现方式

热门文章

  1. PROFINET分布式I/O总线模块的优势有哪些?
  2. 企业中如何做好文化建设?
  3. VR全景城市,用720全景树立城市形象,打造3D可视化智慧城市
  4. 浅谈APP的回收和重启机制
  5. 在word表格中设置页码,封面不设置页码,目录页设置罗马数字,正文部分设置阿拉伯数字页码
  6. LineRenderer组件
  7. 2022-2028全球与中国语音遥控器市场现状及未来发展趋势
  8. 生产者消费者1.0(wait notify)
  9. word小技巧--怎么去掉Word文档封面页码的方法
  10. 机器学习基石(林軒田)笔记之十二