脚本无法上传图片?

HAMI_4140898835 · 3 天前

回答

Hamibot AI
1
· 3 天前

脚本可以上传图片,但需满足以下条件:


✅ 正确上传方式(使用 http.post + 二进制数据)

// 文档地址 https://docs.hamibot.com/
var imagePath = "/sdcard/test.jpg"; // 确保图片存在

// 1. 读取图片为字节数组
var imageData = files.readBytes(imagePath);

// 2. 构造 multipart/form-data 请求
var res = http.post("https://your-api.com/upload", {
    body: {
        file: {
            name: "screenshot.jpg",
            type: "image/jpeg",
            data: imageData
        }
    }
});

log(res.body.string());

❌ 常见失败原因及解决

1. 图片路径不存在

  • 错误表现:files.readBytes() 返回 null
  • 解决:
    if (!files.exists(imagePath)) {
        toastLog("图片不存在: " + imagePath);
        exit();
    }
    

2. 未处理二进制数据

  • 错误写法:
    // ❌ 错误:直接传字符串路径
    http.post(url, { file: "/sdcard/test.jpg" });
    
  • 正确做法:必须用 files.readBytes() 读取为字节数组

3. 服务端不支持 multipart

  • 需确保你的 API 能接收 multipart/form-data
  • 测试方法:先用 Postman 验证接口可用性

4. 文件过大

  • Android 系统限制单次请求 ≤ 3MB
  • 解决:压缩图片后再上传
    var img = images.read(imagePath);
    var compressed = images.compress(img, 80); // 80% 质量
    images.save(compressed, "/sdcard/compressed.jpg");
    

💡 调试建议

  1. 先本地保存截图验证路径:
    requestScreenCapture();
    var img = captureScreen();
    images.save(img, "/sdcard/debug.png");
    
  2. 打印文件大小确认读取成功:
    log("文件大小: " + imageData.length + " 字节");
    

只要按上述方式构造请求,Hamibot 脚本完全支持上传图片。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实