执行如下代码,提示:
deleteFile success!
- errMsg: "STORAGE_EXCEED_AUTHORITY"
- fileID: "cloud://ble2com-urzc8.626c-ble2com-urzc8-1257980634/hisStorage/ovUYn421urGCY9LVR-26UCwz_hHM/1593919420880.xlsx"
- status: 1
wx.cloud.deleteFile({
fileList: [res.data],
success: res => {
// handle success
console.log('deleteFile success!')
console.log(res.fileList)
},
fail: err => {
// handle error
console.log('deleteFile failed!')
},
complete: res => {
// ...
}
})
检查后台文件权限:“所有用户可读,仅创建者可读写”
再检查应该被删除的文件属性,显示 上传者OpenID是未知:“上传者 Open ID ?”
所以我想,在后台客户端上传文件是有OpenID的,但在云函数里上传文件如何设置OpenID呢?不知道思路对不对,但找了cloud.uploadFile官方的API,没看到有什么相关设置。
小程序的 API 可以在三个地方使用,小程序端、云函数端以及 HTTP 的形式。这里不讨论第三种了。
云函数端不受限,而小程序端受限。
你遇到的问题可以通过一楼的方式解决,但为了删除文件就新建个云函数,实在不优雅。
问题的本质是操作者的openid和文件拥有者的openid不一致,因此第二种方案是把上传的步骤挪到小程序端,如果这个方法不适用你的业务。那么第三种方案,把云存储的权限控制切换为「自定义」,配置为
{ read:true, write: true }
当然一切还是需要根据你的业务来选择和调整。
用云函数 cloud.deleteFile