为何使用Node.js无法删除Cloudinary中的视频资源?
解决Cloudinary视频资源删除问题
你的代码没法删除视频,是因为Cloudinary的uploader.destroy方法默认只处理图片类型的资源,视频属于单独的video资源类型,必须显式指定参数。
修改后的代码如下:
const deleteFilesFromCloud = async function (filePublicId) { try { // 针对视频资源,指定resource_type为video const response = await cloudinary.uploader.destroy(filePublicId, { resource_type: 'video' }); return response; } catch (error) { console.log('Error in deleting file from cloud'); return null; } }
如果你的场景里需要同时处理图片和视频,可以加个参数动态指定资源类型:
const deleteFilesFromCloud = async function (filePublicId, resourceType = 'image') { try { const response = await cloudinary.uploader.destroy(filePublicId, { resource_type: resourceType }); return response; } catch (error) { console.log('Error in deleting file from cloud'); return null; } } // 删除视频时调用 deleteFilesFromCloud('your-video-public-id', 'video'); // 删除图片时调用(无需传第二个参数,默认是image) deleteFilesFromCloud('your-image-public-id');
原理很直接:Cloudinary会根据resource_type定位对应的资源存储分区,不指定的话默认只会去图片分区查找,自然找不到视频资源,也就无法完成删除操作。
内容的提问来源于stack exchange,提问作者Pulkit Singhal
相关产品推荐
相关产品推荐

