readFile读取的ArrayBuffer无法上传OSS
https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.readFile.html 问题描述:在浏览器端选择的文件、文件转ArrayBuffer可以正常上传,小程序这边选中的文件、文件转ArrayBuffer无法上传到alioss,想请问下小程序选中的文件、readFile读取的ArrayBuffer与浏览器那边的格式不一样吗? [图片] import OSS from 'ali-oss'
const client = new OSS({
// yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
region: stsCredentials.value.region,
authorizationV4: true,
// 从STS服务获取的临时访问密钥(AccessKey ID和AccessKey Secret)。
accessKeyId: stsCredentials.value.sts.AccessKeyId,
accessKeySecret: stsCredentials.value.sts.AccessKeySecret,
// 从STS服务获取的安全令牌(SecurityToken)。
stsToken: stsCredentials.value.sts.SecurityToken,
// 填写Bucket名称,例如examplebucket。
bucket: stsCredentials.value.bucket,
})
const options = {
// 获取分片上传进度、断点和返回值。
progress: (p, cpt, res) => {
console.log(p)
},
// 设置并发上传的分片数量。
parallel: 4,
// 设置分片大小。默认值为1 MB,最小值为100 KB,最大值为5 GB。最后一个分片的大小允许小于100 KB。
partSize: 1024 * 1024,
// headers,
// 自定义元数据,通过HeadObject接口可以获取Object的元数据。
// meta: { year: 2020, people: "test" },
mime: 'multipart/form-data',
}
wx.chooseMedia({
count: 1, // 限制选择1个文件
mediaType: ['video'], // 只允许选择视频
maxDuration: 60, // 限制视频最大时长
success(res: any) {
console.log('video', res)
const videoFile = res.tempFiles[0]
const videoFormat = videoFile.tempFilePath.split('.').pop()
const name = userStore.userInfo.agent_id + '/video/' + generateUUID() + '.' + videoFormat
const fs = wx.getFileSystemManager()
fs.readFile({
filePath: videoFile.tempFilePath,
position: 0,
async success(res) {
console.log('读取的数据', res.data)
const data = res.data
const resData = await client.multipartUpload(name, data, {
...options,
})
console.log(resData)
},
fail(res) {
console.error(res)
},
})
},
})