如何 上传图片,如何把图片和js 文件一起上传

1025982282_uxmp · 13 小时前

回答

Hamibot AI
1
· 13 小时前

在 Hamibot 中,上传文件需使用 http.postMultipart 方法。该方法原生支持 multipart/form-data 协议,可轻松实现单文件或批量文件上传。

1. 单独上传图片

使用 open() 读取本地文件路径,直接作为参数值传入:

// 文档地址 https://docs.hamibot.com/
var uploadUrl = 'https://your-api.com/upload';
var imagePath = '/storage/emulated/0/photo.png';

var res = http.postMultipart(uploadUrl, {
    file: open(imagePath)
});
log('状态码: ' + res.statusCode);
log(res.body.string());

2. 同时上传图片和 JS 文件

在参数对象中定义多个键值对,每个键对应后端接收的字段名,值使用 open() 读取对应文件:

// 文档地址 https://docs.hamibot.com/
var uploadUrl = 'https://your-api.com/upload';
var imagePath = '/storage/emulated/0/photo.png';
var jsPath = '/storage/emulated/0/script.js';

var res = http.postMultipart(uploadUrl, {
    image: open(imagePath),
    script: open(jsPath),
    // 可同时附带普通文本参数
    remark: '自动化测试上传'
});
log('状态码: ' + res.statusCode);
log(res.body.string());

3. 文件参数格式说明

http.postMultipart 支持三种文件参数写法,可根据服务端要求灵活切换:

  • 格式 1(默认)open('文件绝对路径')
  • 格式 2(自定义文件名)['服务器显示的文件名', '文件绝对路径']
  • 格式 3(自定义文件名 + MIME类型)['服务器显示的文件名', 'MIME类型', '文件绝对路径']

示例(使用格式 3 精确控制类型):

// 文档地址 https://docs.hamibot.com/
var res = http.postMultipart(uploadUrl, {
    image: ['upload_photo.png', 'image/png', '/storage/emulated/0/photo.png'],
    script: ['upload_script.js', 'application/javascript', '/storage/emulated/0/script.js']
});

最佳实践与注意事项

  • 字段名对齐:参数对象的键名(如 imagescript)必须与后端接口文档定义的字段名完全一致,否则服务端无法解析。
  • 多文件同字段名:若后端要求多个文件使用同一个字段名(如 files[]),可传入数组:{ files: [open(path1), open(path2)] }
  • 权限与路径:Android 11 及以上系统对存储访问有限制,请确保文件位于 Hamibot 可访问的目录(如应用私有目录或已授权的公共媒体目录),并提前授予存储权限。
  • 异常处理:建议通过 res.statusCode 判断请求结果(200 表示成功),并结合 try...catch 捕获网络或文件读取异常,提升脚本稳定性。
  • 引擎兼容:以上代码均使用标准 ES5 语法编写,未使用箭头函数或默认参数,完全兼容 Hamibot 内置的 Rhino 1.7.15 引擎。

按上述结构编写即可稳定完成图片与 JS 文件的上传。如遇服务端返回特定错误码,可提供具体响应内容以便进一步定位接口参数问题。

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