信息发布软件,b2b软件,广告发布软件

 找回密码
 立即注册
搜索
查看: 2|回复: 0
打印 上一主题 下一主题

[宣传软件网站动态] AIWROK软件脚本GET下载文件并检测0KB工具

[复制链接]

1924

主题

1934

帖子

1万

积分

积分
11268

资讯缩略图:

资讯发布日期:2026-05-26

资讯发布简介:AIWROK软件脚本GET下载文件并检测0KB工具

资讯关键词:AIWROK软件脚本GET下载文件并检测0KB工具

资讯所属分类:IT资讯 

联系:

① 本信息收集于网络,如有不对的地方欢迎联系我纠正!
② 本信息免费收录,不存在价格的问题!
③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!

④友情链接关键字:软件网站分类目录 网址:http://www.postbbs.com/

资讯详细描述
AIWROK软件脚本GET下载文件并检测0KB工具
AIWROK软件脚本GET下载文件并检测0KB工具 b2b软件

  1. // ============================================================================
  2. // GET下载文件并检测0KB工具
  3. // AIWROK官方群: 711841924,苹果群,528816639
  4. // ============================================================================
  5. // 功能说明:
  6. // 1. downloadFile() - GET请求下载图片文件,自动检测Content-Type和0KB空文件
  7. // 2. uploadFile() - POST multipart/form-data方式上传文件到服务器
  8. // 3. downloadWithResume() - 支持断点续传的下载功能,可从中断处继续下载
  9. // 4. batchDownload() - 批量下载管理器,统计成功/失败数量和总文件大小
  10. //
  11. // 使用场景:
  12. // - 图片资源批量下载和验证
  13. // - 大文件断点续传下载
  14. // - 文件上传到远程服务器
  15. // - 自动化测试中的文件操作验证
  16. // ============================================================================

  17. /**
  18. * 检测是否为有效的图片Content-Type
  19. * @param {String} contentType - HTTP响应的Content-Type头部值
  20. * @returns {Boolean} 是否为有效的图片类型(png/jpeg/jpg/gif/webp)
  21. */
  22. function isValidImageContentType(contentType) {
  23.     if (!contentType) return false;
  24.     contentType = contentType.toLowerCase();
  25.     return contentType.indexOf("image/png") !== -1 ||
  26.            contentType.indexOf("image/jpeg") !== -1 ||
  27.            contentType.indexOf("image/jpg") !== -1 ||
  28.            contentType.indexOf("image/gif") !== -1 ||
  29.            contentType.indexOf("image/webp") !== -1;
  30. }

  31. /**
  32. * GET请求下载文件并检测0KB和是否为有效图片
  33. *
  34. * 工作流程:
  35. * 1. 发起GET请求获取文件内容
  36. * 2. 检查Content-Type是否为有效图片格式
  37. * 3. 将响应数据写入本地文件
  38. * 4. 验证文件大小,拒绝0KB空文件
  39. *
  40. * @param {String} url - 下载地址(必须是有效的图片URL)
  41. * @param {String} savePath - 本地保存路径(如/sdcard/Download/test.png)
  42. * @returns {Boolean} 是否成功下载且文件有效(true=成功,false=失败)
  43. *
  44. * 示例:
  45. * var result = downloadFile("https://example.com/image.png", "/sdcard/test.png");
  46. * if (result) {
  47. *     printl("下载成功!");
  48. * }
  49. */
  50. function downloadFile(url, savePath) {
  51.     var http = new okHttp();
  52.     var response = http.get(url);
  53.    
  54.     var contentType = http.getResponseHeaders();
  55.     printl("Content-Type: " + contentType);
  56.    
  57.     if (!isValidImageContentType(contentType)) {
  58.         printl("⚠️ 不是有效的图片类型: " + contentType);
  59.         return false;
  60.     }
  61.    
  62.     var file = new java.io.File(savePath);
  63.     var fos = new java.io.FileOutputStream(file);
  64.     fos.write(response.getBytes());
  65.     fos.close();
  66.    
  67.     var fileSize = file.length();
  68.     printl("文件大小: " + fileSize + " 字节");
  69.    
  70.     if (fileSize === 0) {
  71.         printl("⚠️ 0KB文件: " + savePath);
  72.         return false;
  73.     }
  74.    
  75.     printl("✅ 文件有效: " + (fileSize / 1024).toFixed(2) + " KB");
  76.     return true;
  77. }

  78. // 单独测试0KB检测 - 创建一个0KB的空文件
  79. printl("=== 测试0KB检测 ===");
  80. var emptyFile = new java.io.File("/sdcard/Download/test_0kb.png");
  81. var fos = new java.io.FileOutputStream(emptyFile);
  82. fos.write(new java.lang.String("").getBytes());
  83. fos.close();
  84. printl("创建了0KB空文件: " + emptyFile.getPath());
  85. printl("空文件大小: " + emptyFile.length() + " 字节");

  86. if (emptyFile.length() === 0) {
  87.     printl("✅ 0KB检测正常!文件确实是0字节");
  88. } else {
  89.     printl("❌ 0KB检测异常!文件不是0字节");
  90. }

  91. printl("");

  92. // 使用示例 - 测试不存在的链接
  93. var url1 = "https://www.baidu.com/img/PCfb_5bf088c07f842ccde3f97245555553ea.png";
  94. var savePath1 = "/sdcard/Download/test_not_exist.png";

  95. printl("=== 测试不存在的链接 ===");
  96. printl("URL: " + url1);
  97. var result1 = downloadFile(url1, savePath1);
  98. printl("结果: " + (result1 ? "成功" : "失败"));

  99. printl("");

  100. // 使用示例 - 测试存在的链接
  101. var url2 = "https://www.baidu.com/img/PCfb_5bf082d29588c07f842ccde3f97243ea.png";
  102. var savePath2 = "/sdcard/Download/test_exist.png";

  103. printl("=== 测试存在的链接 ===");
  104. printl("URL: " + url2);
  105. var result2 = downloadFile(url2, savePath2);
  106. printl("结果: " + (result2 ? "成功" : "失败"));

  107. /**
  108. * POST请求上传文件并验证响应
  109. *
  110. * 工作流程:
  111. * 1. 检查本地文件是否存在
  112. * 2. 构建multipart/form-data格式的HTTP请求体
  113. * 3. 读取文件内容并附加到请求中
  114. * 4. 发送POST请求到服务器
  115. * 5. 根据HTTP状态码判断上传是否成功(2xx为成功)
  116. *
  117. * @param {String} uploadUrl - 上传接口地址(如http://example.com/upload)
  118. * @param {String} filePath - 要上传的本地文件完整路径
  119. * @param {String} fieldName - 表单字段名称(服务端接收文件的字段名)
  120. * @returns {Boolean} 是否成功上传(true=成功,false=失败)
  121. *
  122. * 示例:
  123. * var success = uploadFile(
  124. *     "http://api.example.com/upload",
  125. *     "/sdcard/photo.jpg",
  126. *     "file"
  127. * );
  128. */
  129. function uploadFile(uploadUrl, filePath, fieldName) {
  130.     var http = new okHttp();
  131.     var file = new java.io.File(filePath);
  132.    
  133.     if (!file.exists()) {
  134.         printl("❌ 文件不存在: " + filePath);
  135.         return false;
  136.     }
  137.    
  138.     var fileSize = file.length();
  139.     printl("文件大小: " + (fileSize / 1024).toFixed(2) + " KB");
  140.    
  141.     // 构建multipart请求
  142.     var boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW";
  143.     var requestBody = "--" + boundary + "\r\n" +
  144.                      "Content-Disposition: form-data; name=\"" + fieldName + "\"; filename=\"" + file.getName() + "\"\r\n" +
  145.                      "Content-Type: application/octet-stream\r\n\r\n";
  146.    
  147.     // 读取文件内容
  148.     var fis = new java.io.FileInputStream(file);
  149.     var buffer = new byte[1024];
  150.     var bytesRead;
  151.     while ((bytesRead = fis.read(buffer)) !== -1) {
  152.         requestBody += new java.lang.String(buffer, 0, bytesRead);
  153.     }
  154.     fis.close();
  155.    
  156.     requestBody += "\r\n--" + boundary + "--\r\n";
  157.    
  158.     // 设置请求头
  159.     http.setHeader("Content-Type", "multipart/form-data; boundary=" + boundary);
  160.    
  161.     var response = http.post(uploadUrl, requestBody);
  162.     var statusCode = http.getStatusCode();
  163.    
  164.     printl("HTTP状态码: " + statusCode);
  165.     printl("响应内容: " + response.substring(0, Math.min(response.length(), 200)));
  166.    
  167.     return statusCode >= 200 && statusCode < 300;
  168. }

  169. /**
  170. * 断点续传下载功能
  171. *
  172. * 工作流程:
  173. * 1. 检查目标文件是否已存在(之前下载的部分)
  174. * 2. 如果存在,获取已下载的大小并设置Range请求头
  175. * 3. 发起带Range头的GET请求(HTTP 206 Partial Content)
  176. * 4. 以追加模式写入文件(保留已有内容)
  177. * 5. 验证最终文件大小
  178. *
  179. * 优势:
  180. * - 网络中断后可从断点继续,无需重新下载
  181. * - 节省流量和时间,特别适合大文件
  182. * - 自动检测和处理部分下载的文件
  183. *
  184. * @param {String} url - 下载地址(服务器需支持Range请求)
  185. * @param {String} savePath - 本地保存路径
  186. * @returns {Boolean} 是否成功下载(true=成功,false=失败)
  187. *
  188. * 示例:
  189. * // 第一次下载中断后,再次调用会继续下载
  190. * downloadWithResume("http://example.com/largefile.zip", "/sdcard/file.zip");
  191. */
  192. function downloadWithResume(url, savePath) {
  193.     var http = new okHttp();
  194.     var file = new java.io.File(savePath);
  195.     var existingSize = 0;
  196.    
  197.     // 检查是否有已下载的部分文件
  198.     if (file.exists()) {
  199.         existingSize = file.length();
  200.         printl("发现已下载部分: " + (existingSize / 1024).toFixed(2) + " KB");
  201.         http.setHeader("Range", "bytes=" + existingSize + "-");
  202.     }
  203.    
  204.     var response = http.get(url);
  205.     var statusCode = http.getStatusCode();
  206.    
  207.     if (statusCode === 206 || (statusCode === 200 && existingSize === 0)) {
  208.         var fos;
  209.         if (existingSize > 0) {
  210.             fos = new java.io.FileOutputStream(file, true); // 追加模式
  211.         } else {
  212.             fos = new java.io.FileOutputStream(file);
  213.         }
  214.         
  215.         fos.write(response.getBytes());
  216.         fos.close();
  217.         
  218.         var finalSize = file.length();
  219.         printl("✅ 下载完成,总大小: " + (finalSize / 1024).toFixed(2) + " KB");
  220.         return true;
  221.     } else {
  222.         printl("❌ 下载失败,状态码: " + statusCode);
  223.         return false;
  224.     }
  225. }

  226. /**
  227. * 批量下载文件并统计结果
  228. *
  229. * 工作流程:
  230. * 1. 遍历下载任务列表
  231. * 2. 对每个任务调用downloadFile()进行下载
  232. * 3. 记录成功/失败数量和累计文件大小
  233. * 4. 输出详细的下载进度和统计信息
  234. * 5. 返回统计结果对象
  235. *
  236. * 特点:
  237. * - 自动统计下载成功率
  238. * - 计算总下载文件大小
  239. * - 提供详细的日志输出
  240. * - 单个文件失败不影响其他文件下载
  241. *
  242. * @param {Array} downloadList - 下载任务数组,每项包含:
  243. *   - url: String - 文件下载地址
  244. *   - path: String - 本地保存路径
  245. * @returns {Object} 统计结果对象:
  246. *   - success: Number - 成功下载的文件数量
  247. *   - failed: Number - 失败的文件数量
  248. *   - totalSize: Number - 所有成功文件的总字节数
  249. *
  250. * 示例:
  251. * var tasks = [
  252. *     {url: "http://example.com/img1.png", path: "/sdcard/img1.png"},
  253. *     {url: "http://example.com/img2.png", path: "/sdcard/img2.png"}
  254. * ];
  255. * var result = batchDownload(tasks);
  256. * printl("成功率: " + (result.success / (result.success + result.failed) * 100) + "%");
  257. */
  258. function batchDownload(downloadList) {
  259.     var successCount = 0;
  260.     var failCount = 0;
  261.     var totalSize = 0;
  262.    
  263.     printl("=== 开始批量下载 ===");
  264.     printl("总共需要下载: " + downloadList.length + " 个文件");
  265.    
  266.     for (var i = 0; i < downloadList.length; i++) {
  267.         var item = downloadList[i];
  268.         printl("\n--- 下载第 " + (i + 1) + " 个文件 ---");
  269.         printl("URL: " + item.url);
  270.         printl("保存路径: " + item.path);
  271.         
  272.         var result = downloadFile(item.url, item.path);
  273.         if (result) {
  274.             successCount++;
  275.             var fileSize = new java.io.File(item.path).length();
  276.             totalSize += fileSize;
  277.         } else {
  278.             failCount++;
  279.         }
  280.     }
  281.    
  282.     printl("\n=== 批量下载完成 ===");
  283.     printl("成功: " + successCount + " 个");
  284.     printl("失败: " + failCount + " 个");
  285.     printl("总大小: " + (totalSize / 1024 / 1024).toFixed(2) + " MB");
  286.    
  287.     return {
  288.         success: successCount,
  289.         failed: failCount,
  290.         totalSize: totalSize
  291.     };
  292. }

  293. // 使用示例 - 批量下载测试
  294. printl("\n=== 批量下载示例 ===");
  295. var downloadTasks = [
  296.     {
  297.         url: "https://www.baidu.com/img/PCfb_5bf082d29588c07f842ccde3f97243ea.png",
  298.         path: "/sdcard/Download/batch_test_1.png"
  299.     },
  300.     {
  301.         url: "https://httpbin.org/image/png",
  302.         path: "/sdcard/Download/batch_test_2.png"
  303.     }
  304. ];

  305. var batchResult = batchDownload(downloadTasks);
  306. printl("批量下载统计: " + JSON.stringify(batchResult));
复制代码



unto安卓脚本HID按键方法完整示例nextnocontent
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读
群发软件AIWROK软件脚本GET下载文件并检测0KB工具
AIWROK软件脚本GET下载文件并检测0KB工具
群发软件安卓脚本HID按键方法完整示例
安卓脚本HID按键方法完整示例
群发软件AIWROK软件键鼠HID滑动所有方法功能演示
AIWROK软件键鼠HID滑动所有方法功能演示
群发软件苹果脚本里HID的5种滑动方法的使用
苹果脚本里HID的5种滑动方法的使用
群发软件苹果脚本示例7种不同的OCR识别和点击方法
苹果脚本示例7种不同的OCR识别和点击方法
群发软件AIWROK软件安卓脚本FTP上传下载例子
AIWROK软件安卓脚本FTP上传下载例子
群发软件AIWROK软件脚本JSON转换示例
AIWROK软件脚本JSON转换示例
群发软件AIWROK软件运算符高级应用实例
AIWROK软件运算符高级应用实例
群发软件JavaScript语法小示例
JavaScript语法小示例
群发软件展示JavaScript各种语句标识符的实际应用
展示JavaScript各种语句标识符的实际应用
群发软件AIWROK条件语句实用示例智能活动推荐系统
AIWROK条件语句实用示例智能活动推荐系统
群发软件AIWROK软件示例数组方法实战应用
AIWROK软件示例数组方法实战应用
群发软件示例JavaScript的 try-catch-finally-throw用法
示例JavaScript的 try-catch-finally-throw用法
群发软件JavaScript 高级错误处理实战示例
JavaScript 高级错误处理实战示例
群发软件安卓脚本AIWROK软件示例JS函数高级用法
安卓脚本AIWROK软件示例JS函数高级用法
群发软件AIWROK环境JavaScript编码规范完整示例
AIWROK环境JavaScript编码规范完整示例
群发软件安卓脚本示例实时截图判断页面变化
安卓脚本示例实时截图判断页面变化
群发软件苹果脚本7种不同的OCR识别
苹果脚本7种不同的OCR识别
群发软件安卓脚本多变的function用法
安卓脚本多变的function用法
群发软件苹果脚本示例Config配置H5集成
苹果脚本示例Config配置H5集成
群发软件安卓脚本类型判断与Boolean对象综合示例
安卓脚本类型判断与Boolean对象综合示例
群发软件线程全局变量H5可视化控制台
线程全局变量H5可视化控制台
群发软件秒吐司快速显示和关闭的UI提示窗口
秒吐司快速显示和关闭的UI提示窗口
群发软件苹果脚本里H5 里的 window.at.callFun 示例
苹果脚本里H5 里的 window.at.callFun 示例
群发软件H5日志打印运行过程例子
H5日志打印运行过程例子
群发软件AIWROK软件字符串方法实用案例
AIWROK软件字符串方法实用案例
群发软件HID贝塞尔曲线运动控制器
HID贝塞尔曲线运动控制器
群发软件AIWROK苹果脚本sleep方法综合实战示例
AIWROK苹果脚本sleep方法综合实战示例
群发软件苹果脚本Line控件的多种创意用法和实际应用场景
苹果脚本Line控件的多种创意用法和实际应用场景
群发软件苹果脚本toast高级应用综合示例
苹果脚本toast高级应用综合示例
群发软件苹果智能OCR自动化助手
苹果智能OCR自动化助手
群发软件苹果脚本UI超快速点击示例
苹果脚本UI超快速点击示例
群发软件展示时间戳的各种复杂处理方法
展示时间戳的各种复杂处理方法
群发软件苹果脚本随机数实用示例
苹果脚本随机数实用示例
群发软件安卓手机脚本多种倒计时显示方式
安卓手机脚本多种倒计时显示方式
群发软件苹果脚本屏幕事件EVENT示例
苹果脚本屏幕事件EVENT示例
群发软件苹果脚本屏幕类screen例子
苹果脚本屏幕类screen例子
群发软件安卓手机config配置演示实列
安卓手机config配置演示实列
群发软件苹果脚本配置config小实例
苹果脚本配置config小实例 https://www.yuque.com/aiwork/dcvhmb/qolobpysdg0hvi2e
群发软件苹果脚本矩形类rect小实例
苹果脚本矩形类rect小实例
群发软件AIWROK安卓苹果平台设计的实用工具库
AIWROK安卓苹果平台设计的实用工具库
群发软件AIWROK软件Function导入方法实例演示
AIWROK软件Function导入方法实例演示
群发软件苹果脚本实例1项目project应用示例
苹果脚本实例1项目project应用示例
群发软件苹果脚本实例1剪贴板功能集成
苹果脚本实例1剪贴板功能集成
群发软件苹果iOS脚本Detect类系统性使用示例
苹果iOS脚本Detect类系统性使用示例
群发软件AIWROK苹果系统打印H5界面日志输出
AIWROK苹果系统打印H5界面日志输出
群发软件H5案例自动化看广告撸金币系统
H5案例自动化看广告撸金币系统
群发软件AIWROK苹果脚本H5任务执行小例子
AIWROK苹果脚本H5任务执行小例子
群发软件AIWROK软件苹果水平容器[Horizontal]小实例
AIWROK软件苹果水平容器[Horizontal]小实例
群发软件AIWROK苹果脚本实例1界面UI输入框类[Input]
AIWROK苹果脚本实例1界面UI输入框类
群发软件AIWROK软件苹果脚本案例1空白站位[Space]方法
AIWROK软件苹果脚本案例1空白站位[Space]方法
群发软件AIWROK软件苹查系统复选框用法
AIWROK软件苹查系统复选框用法
群发软件苹果AIWROK实例单选按钮组类[RadioButtonGroup]完整综合示例
苹果AIWROK实例单选按钮组类[RadioButtonGroup]完整综合示例
群发软件AIWROK软件苹果实例UI-垂直容器[Vertical]高级综合示例
AIWROK软件苹果实例UI-垂直容器[Vertical]高级综合示例
群发软件IOS苹果脚本View的完整功能实例
IOS苹果脚本View的完整功能实例
群发软件AIWROK苹果系统实例演示1标签类[Label]方法
AIWROK苹果系统实例演示1标签类[Label]方法
信息发布软件AIWROK软件苹果UI按钮Button方法示例
AIWROK软件苹果UI按钮Button方法示例
信息发布软件AIWROK软件苹果TAB界面视图示例
AIWROK软件苹果TAB界面视图示例
信息发布软件AIWROK苹果系统自带view视图简洁UI界面示例
AIWROK苹果系统自带view视图简洁UI界面示例
信息发布软件汇集HID安卓输入文字的方法和复制粘贴示例
汇集HID安卓输入文字的方法和复制粘贴示例
信息发布软件AIWROK软件找字与OCR方法汇总示例
AIWROK软件找字与OCR方法汇总示例
信息发布软件AIWROK软件找图方法汇总示例
AIWROK软件找图方法汇总示例
信息发布软件AIWROK软件滑动方法集合示例
AIWROK软件滑动方法集合示例
信息发布软件AIWROK软件安卓AIWROK汇集软件点击
AIWROK软件安卓AIWROK汇集软件点击
信息发布软件苹果系统点击方法综合示例
苹果系统点击方法综合示例

QQ|( 京ICP备09078825号 )

本网站信息发布软件,是可以发布论坛,发送信息到各大博客,各大b2b软件自动发布,好不夸张的说:只要手工能发在电脑打开IE能发的网站,用这个宣传软件就可以仿制动作,进行推送发到您想发送的B2B网站或是信息发布平台上,不管是后台,还是前台,都可以进行最方便的广告发布,这个广告发布软件,可以按月购买,还可以试用软件,对网站的验证码也可以完全自动对信息发布,让客户自动找上门,使企业轻松实现b2b发布,这个信息发布软件,均是本站原创正版开发,拥有正版的血统,想要新功能,欢迎提意见给我,一好的分类信息群发软件在手,舍我其谁。QQ896757558

GMT+8, 2026-5-26 07:19 , Processed in 0.420527 second(s), 49 queries .

宣传软件--信息发布软件--b2b软件广告发布软件

快速回复 返回顶部 返回列表