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

示例图片2


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
}
回到顶部