我现在是用wx.chooseImage + wx.uploadFile实现图片直传阿里云oss上。
你想反馈一个 Bug 还是 提一个需求?
应该是个兼容性问题, == 或者是wx.uploadFile的接口禁了请求阿里云oss资源
如果是 Bug:
* Bug 表现是什么?预期表现是什么?
真机上能上传是可以的,能成功上传,但到真机上上传失败,不管是安卓还是苹果
* 如何复现?
编辑器上成功,改传的字段都有:
安卓机上报you have no reight to access this object bacause of bucket acl;
苹果机上报:
* 提供一个最简复现 Demo
wx.chooseImage({
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
that.setData({
files: that.data.files.concat(res.tempFilePaths[0])
});
// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
let tempFilePaths = res.tempFilePaths[0];
// 随机生成文件名称,保存文件后缀名
let fileName = that.randomString(10) + that.getSuffix(tempFilePaths);
wx.uploadFile({
url: that.data.ossConfig.host, //接口地址
filePath: tempFilePaths,
name: 'file',
formData: {
'name': tempFilePaths,
'key': that.data.ossConfig.dir + fileName,
'policy': that.data.ossConfig.policy,
'OSSAccessKeyId': that.data.ossConfig.accessid,
'success_action_status': '200',
'Signature': that.data.ossConfig.signature,
'Expires': that.data.ossConfig.expire,
'file': tempFilePaths,
},
success: function (res) {
// console.log(res, 'res0-----');
var data = res.data;
that.setData({
filesInfo: that.data.filesInfo.concat({ file_url: that.data.ossConfig.host + '/' + that.data.ossConfig.dir + fileName, file_name: fileName}),
})
console.log(res, 'success upload!-----');
},
fail: function (res) {
console.log(res, 'falis222-----');
}
})
}
})
如果是需求:
* 你希望有什么能力?
* 你需要这个能力的场景是 ?
阿里云视频点播 编辑器可以上传 但是在真机不能上传 这是要咋弄
一样的问题,请怎么解决的?
最后是成功了的,中间过程很曲折
同400问题。 官方说是个人服务器问题...
我反馈了 官方也是这么说 ,我就纳闷了,上传阿里云服务,随机失败,也是人家阿里云的问题?我调取了阿里云的访问日志,根本就没有400的访问记录 ,这是逼着大家用腾讯云啊
我一问 我们也是阿里云。 什么情况。。。
不知道呀 ,谁都说不是自己的问题,贼蛋疼
服务器不是我弄的,但是不是要去添加什么配置。。。
我这去看nginx日志 是有400访问日志的。 而且我这上传失败是有规律的。。就是第一次必定失败,然后后续的可以成功。。 抓包请求debug也没用, 一旦开本地代理抓包,就一直上传成功。 我头都大了
大兄弟 解决了吗 我这边真机上调试 提示上传文件不存在 在开发工具上也是正常
大兄弟问题解决了吗?
兄弟你解决那个400的问题了吗