Autojs: 坚果云文本文件上传/下载
例子
/** 坚果云 */
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: 坚果云文本文件上传/下载相关推荐
- 前端js华为云obs上传下载文件与进度条的设置
前端js华为云obs上传下载文件与进度条的设置 首先下载OBS BrowserJS SDK安装包 用git将代码拉到本地 git clone https://github.com/huaweiclou ...
- 基于Java+hadoop网络云盘上传下载系统设计与实现
目 录 网络云盘上传下载系统摘要----------------------------------5 The Network Cloud Disk`s Upload and DownloadAbst ...
- 阿里云OSS上传下载跨域问题
OSS文件传输 使用OSS进行上传/下载操作时,时常会遇到跨域问题. 其表现为,直接通过浏览器,可以直接访问已经存储在OSS中得文件地址并下载,但是通过代码却会报跨域问题. 解决办法:登录阿里云OSS ...
- bpcs uploader.php,linux 百度云bpcs_uploader上传 下载 删除等操作
百度云bpcs_uploader ------------------------------------------------------------------ 上传文件到百度云命令: 在bpc ...
- 腾讯云COS上传下载文件
1.初始化COSClient import com.qcloud.cos.COSClient; import com.qcloud.cos.ClientConfig; import com.qclou ...
- 微信小程序文件云存储-上传下载删除功能
文件云存储 云存储提供高可用.高稳定.强安全的云端存储服务,支持任意数量和形式的非结构化数据存储,如视频和图片,并在控制台进行可视化管理.云存储包含以下功能: 存储管理:支持文件夹,方便文件归类.支持 ...
- 阿里云OSS上传下载和短信验证码
(一):首先得在阿里云OSS上开通相关的服务,具体哪里开通及如何操作请参考此链接: https://help.aliyun.com/document_detail/31883.html?spm=517 ...
- java集成华为云obs上传下载实战
说明 最近项目上需要开发一个服务去和华为云OBS集成获取一些业务上的文件,此处记录一下简单的java集成obs的入门,希望对大家快速入门有所帮助:) 实现效果 上传对象 下载到本地 操作步骤 1.开通 ...
- 阿里云oss上传下载删除工具类
工具类-阿里云oss private static String accessId;private static String accessKey;private static String endp ...
最新文章
- 阿里最强热修复:Sophix 超高速集成与踩坑
- echo向文件中写入
- 如果宁静是 Oracle,万茜、张雨绮、黄圣依是什么?
- 华为xs第几批升级鸿蒙,华为和荣耀老机型用户有福:确定能批量升级到鸿蒙系统!...
- path.join 和 path.resolve的区别
- 华为卡槽打不开怎么办_17500元!华为5G折叠手机刷屏,有人焦虑连夜开会…
- html5程序自动登录,Jtro的技术分享:网页调起unity的exe程序并自动登录
- android登陆的编写
- 基于JAVA+SpringBoot+Mybatis+MYSQL的在线动漫信息平台
- spark mlib行矩阵(RowMatrix)入门
- 使用Requests爬取网页图片并保存
- 创业吧,兄弟--记者眼中的中关村创业大街创业热潮纪实
- 蒙特卡罗方法(Monte Carlo)
- REST Assured 使用详解
- UHF RFID 读卡实验
- android:绘图
- 08蚂蚁-互联网安全架构——1.XSS攻击,SQL注入攻击,Http请求防盗链,CSRF请求攻击,忘记密码暴力破解,上传文件漏洞
- vivo分屏_Vivo手机怎么分屏,你知道吗?不会手机就白买了。
- mysql触发器不起作用_mysql – 授予模式触发器不起作用
- 将一个整数分解为质数的乘积的实现方式