回答
脚本可以上传图片,但需满足以下条件:
✅ 正确上传方式(使用 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");
💡 调试建议
- 先本地保存截图验证路径:
requestScreenCapture(); var img = captureScreen(); images.save(img, "/sdcard/debug.png"); - 打印文件大小确认读取成功:
log("文件大小: " + imageData.length + " 字节");
只要按上述方式构造请求,Hamibot 脚本完全支持上传图片。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实