let cacheDir = Foundation.WPFApplication().getContext().cacheDir // 对应位置为/data/storage/el2/base/haps/entry/cache
let path = argus-online-20240528165640617.glog
let file = fs.openSync(path, fs.OpenMode.CREATE);
// 复制文件到缓存目录下
let name = 'alex023.glog'
let _path = cacheDir + '/' + name;
fs.copyFileSync(file.fd, _path)
// 读取
let file2 = fs.openSync(path, 0o2);
let stat = fs.lstatSync(path);
let buf2 = new ArrayBuffer(stat.size);
fs.readSync(file2.fd, buf2); // 以同步方法从流文件读取数据。
fs.fsyncSync(file2.fd);
fs.closeSync(file2.fd);
formData.append('file', buf2);
axios.post('src', formData, {
headers: {
'Content-Type': `multipart/form-data;boundary=---Boundary${Foundation.WPFTime().systemCurrentTimeMillis()}`,
'x-argus-app-id': 'app_driver',
'x-app-platform': 'ios',
},
context: Foundation.WPFApplication().getContext() // 这里就是common.Context
}).then(v => {
console.info(JSON.stringify(v))
}).catch(v => {
console.info(JSON.stringify(v))
})
上面的代码执行后,后端拿不到form-data中的file, 显示为一个空文件;
当前axios库下载只支持get方式 如果非要使用post方式下载可以使用:rcp、http,或者ohos.request 其中rcp和http相比,更推荐rcp, 因为ohos.net.http原生库能力暂不会再演进或新增其他功能,rcp能力在接口易用性、性能、功耗方面比http网络库好