|
|
资讯缩略图:
资讯发布日期:2026-05-26
资讯发布简介:AIWROK软件脚本GET下载文件并检测0KB工具
资讯关键词:AIWROK软件脚本GET下载文件并检测0KB工具
资讯所属分类:IT资讯
联系:
① 本信息收集于网络,如有不对的地方欢迎联系我纠正! ② 本信息免费收录,不存在价格的问题! ③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!
④友情链接关键字:软件网站分类目录 网址:http://www.postbbs.com/
资讯详细描述
 | |  |  | AIWROK软件 脚本GET下载文件并检测0KB工具
- // ============================================================================
- // GET下载文件并检测0KB工具
- // AIWROK官方群: 711841924,苹果群,528816639
- // ============================================================================
- // 功能说明:
- // 1. downloadFile() - GET请求下载图片文件,自动检测Content-Type和0KB空文件
- // 2. uploadFile() - POST multipart/form-data方式上传文件到服务器
- // 3. downloadWithResume() - 支持断点续传的下载功能,可从中断处继续下载
- // 4. batchDownload() - 批量下载管理器,统计成功/失败数量和总文件大小
- //
- // 使用场景:
- // - 图片资源批量下载和验证
- // - 大文件断点续传下载
- // - 文件上传到远程服务器
- // - 自动化测试中的文件操作验证
- // ============================================================================
- /**
- * 检测是否为有效的图片Content-Type
- * @param {String} contentType - HTTP响应的Content-Type头部值
- * @returns {Boolean} 是否为有效的图片类型(png/jpeg/jpg/gif/webp)
- */
- function isValidImageContentType(contentType) {
- if (!contentType) return false;
- contentType = contentType.toLowerCase();
- return contentType.indexOf("image/png") !== -1 ||
- contentType.indexOf("image/jpeg") !== -1 ||
- contentType.indexOf("image/jpg") !== -1 ||
- contentType.indexOf("image/gif") !== -1 ||
- contentType.indexOf("image/webp") !== -1;
- }
- /**
- * GET请求下载文件并检测0KB和是否为有效图片
- *
- * 工作流程:
- * 1. 发起GET请求获取文件内容
- * 2. 检查Content-Type是否为有效图片格式
- * 3. 将响应数据写入本地文件
- * 4. 验证文件大小,拒绝0KB空文件
- *
- * @param {String} url - 下载地址(必须是有效的图片URL)
- * @param {String} savePath - 本地保存路径(如/sdcard/Download/test.png)
- * @returns {Boolean} 是否成功下载且文件有效(true=成功,false=失败)
- *
- * 示例:
- * var result = downloadFile("https://example.com/image.png", "/sdcard/test.png");
- * if (result) {
- * printl("下载成功!");
- * }
- */
- function downloadFile(url, savePath) {
- var http = new okHttp();
- var response = http.get(url);
-
- var contentType = http.getResponseHeaders();
- printl("Content-Type: " + contentType);
-
- if (!isValidImageContentType(contentType)) {
- printl("⚠️ 不是有效的图片类型: " + contentType);
- return false;
- }
-
- var file = new java.io.File(savePath);
- var fos = new java.io.FileOutputStream(file);
- fos.write(response.getBytes());
- fos.close();
-
- var fileSize = file.length();
- printl("文件大小: " + fileSize + " 字节");
-
- if (fileSize === 0) {
- printl("⚠️ 0KB文件: " + savePath);
- return false;
- }
-
- printl("✅ 文件有效: " + (fileSize / 1024).toFixed(2) + " KB");
- return true;
- }
- // 单独测试0KB检测 - 创建一个0KB的空文件
- printl("=== 测试0KB检测 ===");
- var emptyFile = new java.io.File("/sdcard/Download/test_0kb.png");
- var fos = new java.io.FileOutputStream(emptyFile);
- fos.write(new java.lang.String("").getBytes());
- fos.close();
- printl("创建了0KB空文件: " + emptyFile.getPath());
- printl("空文件大小: " + emptyFile.length() + " 字节");
- if (emptyFile.length() === 0) {
- printl("✅ 0KB检测正常!文件确实是0字节");
- } else {
- printl("❌ 0KB检测异常!文件不是0字节");
- }
- printl("");
- // 使用示例 - 测试不存在的链接
- var url1 = "https://www.baidu.com/img/PCfb_5bf088c07f842ccde3f97245555553ea.png";
- var savePath1 = "/sdcard/Download/test_not_exist.png";
- printl("=== 测试不存在的链接 ===");
- printl("URL: " + url1);
- var result1 = downloadFile(url1, savePath1);
- printl("结果: " + (result1 ? "成功" : "失败"));
- printl("");
- // 使用示例 - 测试存在的链接
- var url2 = "https://www.baidu.com/img/PCfb_5bf082d29588c07f842ccde3f97243ea.png";
- var savePath2 = "/sdcard/Download/test_exist.png";
- printl("=== 测试存在的链接 ===");
- printl("URL: " + url2);
- var result2 = downloadFile(url2, savePath2);
- printl("结果: " + (result2 ? "成功" : "失败"));
- /**
- * POST请求上传文件并验证响应
- *
- * 工作流程:
- * 1. 检查本地文件是否存在
- * 2. 构建multipart/form-data格式的HTTP请求体
- * 3. 读取文件内容并附加到请求中
- * 4. 发送POST请求到服务器
- * 5. 根据HTTP状态码判断上传是否成功(2xx为成功)
- *
- * @param {String} uploadUrl - 上传接口地址(如http://example.com/upload)
- * @param {String} filePath - 要上传的本地文件完整路径
- * @param {String} fieldName - 表单字段名称(服务端接收文件的字段名)
- * @returns {Boolean} 是否成功上传(true=成功,false=失败)
- *
- * 示例:
- * var success = uploadFile(
- * "http://api.example.com/upload",
- * "/sdcard/photo.jpg",
- * "file"
- * );
- */
- function uploadFile(uploadUrl, filePath, fieldName) {
- var http = new okHttp();
- var file = new java.io.File(filePath);
-
- if (!file.exists()) {
- printl("❌ 文件不存在: " + filePath);
- return false;
- }
-
- var fileSize = file.length();
- printl("文件大小: " + (fileSize / 1024).toFixed(2) + " KB");
-
- // 构建multipart请求
- var boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW";
- var requestBody = "--" + boundary + "\r\n" +
- "Content-Disposition: form-data; name=\"" + fieldName + "\"; filename=\"" + file.getName() + "\"\r\n" +
- "Content-Type: application/octet-stream\r\n\r\n";
-
- // 读取文件内容
- var fis = new java.io.FileInputStream(file);
- var buffer = new byte[1024];
- var bytesRead;
- while ((bytesRead = fis.read(buffer)) !== -1) {
- requestBody += new java.lang.String(buffer, 0, bytesRead);
- }
- fis.close();
-
- requestBody += "\r\n--" + boundary + "--\r\n";
-
- // 设置请求头
- http.setHeader("Content-Type", "multipart/form-data; boundary=" + boundary);
-
- var response = http.post(uploadUrl, requestBody);
- var statusCode = http.getStatusCode();
-
- printl("HTTP状态码: " + statusCode);
- printl("响应内容: " + response.substring(0, Math.min(response.length(), 200)));
-
- return statusCode >= 200 && statusCode < 300;
- }
- /**
- * 断点续传下载功能
- *
- * 工作流程:
- * 1. 检查目标文件是否已存在(之前下载的部分)
- * 2. 如果存在,获取已下载的大小并设置Range请求头
- * 3. 发起带Range头的GET请求(HTTP 206 Partial Content)
- * 4. 以追加模式写入文件(保留已有内容)
- * 5. 验证最终文件大小
- *
- * 优势:
- * - 网络中断后可从断点继续,无需重新下载
- * - 节省流量和时间,特别适合大文件
- * - 自动检测和处理部分下载的文件
- *
- * @param {String} url - 下载地址(服务器需支持Range请求)
- * @param {String} savePath - 本地保存路径
- * @returns {Boolean} 是否成功下载(true=成功,false=失败)
- *
- * 示例:
- * // 第一次下载中断后,再次调用会继续下载
- * downloadWithResume("http://example.com/largefile.zip", "/sdcard/file.zip");
- */
- function downloadWithResume(url, savePath) {
- var http = new okHttp();
- var file = new java.io.File(savePath);
- var existingSize = 0;
-
- // 检查是否有已下载的部分文件
- if (file.exists()) {
- existingSize = file.length();
- printl("发现已下载部分: " + (existingSize / 1024).toFixed(2) + " KB");
- http.setHeader("Range", "bytes=" + existingSize + "-");
- }
-
- var response = http.get(url);
- var statusCode = http.getStatusCode();
-
- if (statusCode === 206 || (statusCode === 200 && existingSize === 0)) {
- var fos;
- if (existingSize > 0) {
- fos = new java.io.FileOutputStream(file, true); // 追加模式
- } else {
- fos = new java.io.FileOutputStream(file);
- }
-
- fos.write(response.getBytes());
- fos.close();
-
- var finalSize = file.length();
- printl("✅ 下载完成,总大小: " + (finalSize / 1024).toFixed(2) + " KB");
- return true;
- } else {
- printl("❌ 下载失败,状态码: " + statusCode);
- return false;
- }
- }
- /**
- * 批量下载文件并统计结果
- *
- * 工作流程:
- * 1. 遍历下载任务列表
- * 2. 对每个任务调用downloadFile()进行下载
- * 3. 记录成功/失败数量和累计文件大小
- * 4. 输出详细的下载进度和统计信息
- * 5. 返回统计结果对象
- *
- * 特点:
- * - 自动统计下载成功率
- * - 计算总下载文件大小
- * - 提供详细的日志输出
- * - 单个文件失败不影响其他文件下载
- *
- * @param {Array} downloadList - 下载任务数组,每项包含:
- * - url: String - 文件下载地址
- * - path: String - 本地保存路径
- * @returns {Object} 统计结果对象:
- * - success: Number - 成功下载的文件数量
- * - failed: Number - 失败的文件数量
- * - totalSize: Number - 所有成功文件的总字节数
- *
- * 示例:
- * var tasks = [
- * {url: "http://example.com/img1.png", path: "/sdcard/img1.png"},
- * {url: "http://example.com/img2.png", path: "/sdcard/img2.png"}
- * ];
- * var result = batchDownload(tasks);
- * printl("成功率: " + (result.success / (result.success + result.failed) * 100) + "%");
- */
- function batchDownload(downloadList) {
- var successCount = 0;
- var failCount = 0;
- var totalSize = 0;
-
- printl("=== 开始批量下载 ===");
- printl("总共需要下载: " + downloadList.length + " 个文件");
-
- for (var i = 0; i < downloadList.length; i++) {
- var item = downloadList[i];
- printl("\n--- 下载第 " + (i + 1) + " 个文件 ---");
- printl("URL: " + item.url);
- printl("保存路径: " + item.path);
-
- var result = downloadFile(item.url, item.path);
- if (result) {
- successCount++;
- var fileSize = new java.io.File(item.path).length();
- totalSize += fileSize;
- } else {
- failCount++;
- }
- }
-
- printl("\n=== 批量下载完成 ===");
- printl("成功: " + successCount + " 个");
- printl("失败: " + failCount + " 个");
- printl("总大小: " + (totalSize / 1024 / 1024).toFixed(2) + " MB");
-
- return {
- success: successCount,
- failed: failCount,
- totalSize: totalSize
- };
- }
- // 使用示例 - 批量下载测试
- printl("\n=== 批量下载示例 ===");
- var downloadTasks = [
- {
- url: "https://www.baidu.com/img/PCfb_5bf082d29588c07f842ccde3f97243ea.png",
- path: "/sdcard/Download/batch_test_1.png"
- },
- {
- url: "https://httpbin.org/image/png",
- path: "/sdcard/Download/batch_test_2.png"
- }
- ];
- var batchResult = batchDownload(downloadTasks);
- printl("批量下载统计: " + JSON.stringify(batchResult));
复制代码
| |  | |  |
|
unto安卓脚本HID按键方法完整示例nextnocontent
|