在uni-app阿里云空间内云函数无法读取设置为私有权限的云存储文件

在uni-app阿里云空间内云函数无法读取设置为私有权限的云存储文件

示例代码:

await uniCloud.httpclient.request(filepath.fileList[0].tempFileURL);

操作步骤:

预期结果:

实际结果:

bug描述:

当阿里云存储设为私有权限时,云函数里面无法直接通过url方式读取文件,返回403错误

5 回复

问题已修复,重新上传云函数试下。

更多关于在uni-app阿里云空间内云函数无法读取设置为私有权限的云存储文件的实战教程也可以访问 https://www.itying.com/category-93-b0.html


非bug,私有权限的情况下本来就不能直接通过url下载访问的,读取文件需要先获取临时连接https://doc.dcloud.net.cn/uniCloud/storage/dev.html#cloudgettempfileurl

问题是在云函数内,使用这个函数uniCloud.getTempFileURL,返回的链接没有带auth,仍然出现403错误

我试过,在本地运行这个函数时,可以正确返回auth,但是云端调用,返回的是一模一样的地址,所以出现了403

这是一个在阿里云私有权限存储场景下的常见问题。当云存储设置为私有权限时,临时URL需要经过签名认证才能访问,直接使用文件URL会返回403错误。

解决方案是使用uniCloud提供的官方API来访问私有文件:

// 在云函数中使用此方式读取私有文件
const result = await uniCloud.downloadFile({
  fileID: filepath.fileList[0].fileID // 使用文件的fileID而非tempFileURL
})

或者如果需要获取文件的临时访问链接:

const result = await uniCloud.getTempFileURL({
  fileList: [filepath.fileList[0].fileID]
})
回到顶部