uniCloud.deleteFile中fileList里的fileID带逗号会导致fileID被解析成2个对象导致删除云存储文件失败
uniCloud.deleteFile中fileList里的fileID带逗号会导致fileID被解析成2个对象导致删除云存储文件失败
产品分类:uniCloud/App
示例代码:
//删除视频
async delVideo(videoId, videoUrl) {
//先删除视频记录
const res = await db.collection("videos").doc(videoId).remove()
//然后删除云存储的视频
//注意,带逗号会删除失败!!!
console.log("videoUrl: ", videoUrl)
const resDel = await uniCloud.deleteFile({
fileList: [JSON.stringify(videoUrl)] //对于阿里云,url就是fileID
})
console.log("resDel: ", resDel)
return res
},
操作步骤:
//删除视频
async delVideo(videoId, videoUrl) {
//先删除视频记录
const res = await db.collection("videos").doc(videoId).remove()
//然后删除云存储的视频
//注意,带逗号会删除失败!!!
console.log("videoUrl: ", videoUrl)
const resDel = await uniCloud.deleteFile({
fileList: [JSON.stringify(videoUrl)] //对于阿里云,url就是fileID
})
console.log("resDel: ", resDel)
return res
},
预期结果:
阿里云云存储文件,文件链接带逗号,也可以正常删除
实际结果:
阿里云云存储文件,文件链接带逗号,删除失败,因为文件链接放入fileList后,会被解析成两个字符串对象
1 回复
这是一个已知的uniCloud.deleteFile方法在处理带逗号fileID时的解析问题。当fileID包含逗号时,系统会错误地将其拆分为多个ID。
解决方案是避免直接使用JSON.stringify处理含逗号的URL,改用以下方式:
async delVideo(videoId, videoUrl) {
const res = await db.collection("videos").doc(videoId).remove()
// 将整个URL作为单个字符串处理
const resDel = await uniCloud.deleteFile({
fileList: [videoUrl] // 直接使用原始URL,不要JSON.stringify
})
return res
}