【问题标题】:how to delete folders from cloudinary media library?如何从云媒体库中删除文件夹?
【发布时间】:2020-04-08 07:59:42
【问题描述】:

我想删除那些没有任何资产的文件夹。

目前,我将图像保存在 cloudinary 中,例如这个项目/uuid/image。

我使用这个api方法cloudinary.api.delete_resources_by_prefix从UUID文件夹中删除资产,图像从cloudinary媒体库中删除但存在空文件夹。

【问题讨论】:

    标签: node.js graphql cloudinary


    【解决方案1】:

    从documentation,有一个delete_folder方法。

    因此,使用 Node,您可以执行以下操作:

    cloudinary.v2.api.delete_folder("project/uuid", console.log);
    

    【讨论】:

    • 显然,如果您在cloudinary.api.delete_resources_by_prefix 之后立即调用它,它将回答{ message: 'Folder is not empty', http_code: 400 }。
    • 我使用相同的功能,但我的应用程序崩溃了,同时返回了“文件夹为空消息”。有什么想法吗?
    【解决方案2】:

    我找到了解决方案。 Cloudinary 将文件从用户的临时文件夹重命名为我想要的文件夹。之后,我会删除临时文件夹和里面的所有文件。

    我找到了一个解决方案,我在我的“重命名”承诺之后结合了 delete_ressources_by_prefix 和 delete_folder。另外,我更新了我的 mongo DB 的信息

                       arrayPics = req.body.pics
    
                       let res_promises = arrayPics.map(pic => new Promise((resolve, reject) => {
                           
                           cloudinary.uploader.rename(`productPics/tmp-${req.user._id}/${pic.split('/').pop().split('.')[0]}`,
                           `productPics/${doc._id}/${pic.split('/').pop().split('.')[0]}`,function(err,result){
                               console.log(err)
                               resolve()
                           })
                       }))
    
                       Promise.all(res_promises).then(()=>{
                           cloudinary.api.delete_resources_by_prefix(`productPics/tmp-${req.user._id}`,function(err,result){
                                   console.log(err)
                               cloudinary.api.delete_folder(`productPics/tmp-${req.user._id}`,function(err,result){
                                   console.log(err)
                               });
                           })
                               for(let i=0;i<arrayPics.length;i++){
                                   arrayPics[i] = arrayPics[i].replace(arrayPics[i].split('/').reverse()[1],doc._id)
                               }
    
                               products.update(
                                   {_id: doc._id},
                                   {$set: {images: arrayPics}}
                               )
                               res.send(doc._id)
                       })
    

    【讨论】:

      猜你喜欢
      • 2014-10-05
      • 2011-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多