从云端销毁图像

问题描述 投票:0回答:1

[当我从graphql服务器删除图像并使用uploader.upload.destroy(public_id)时,它将从cloudinary媒体库(https://cloudinary.com/console/media_library/folders/%2F)中删除

但是图像仍然可用,如果我通过云端端点(https://res.cloudinary.com/db9rcrnuw/image/upload/v1576054005/47122.png)访问它

删除图像时,我也想销毁那些端点。

这里,screen.basePath表示图像的public_Id


      const screen = await ctx.prisma
        .deleteScreen({
          id: args.screenId
        })
        .$fragment(fragment);

      if (scrn.basePath.length === 5) {
        console.log(scrn.basePath.length);
        cloudinary.uploader.destroy(screen.basePath, function(error, result) {
          console.log(result, error);
        });
        return screen;
      }
graphql cloudinary prisma express-graphql
1个回答
0
投票

简短的答案是,这是由以下原因造成的:不使用destroy API调用中的'invalidate'参数,以及URL格式之间的差异(即版本号(v123456789),'v1'或否)版本号),以及使用您的帐户配置为无效发送的格式访问资源。

[要做的第一件事是确保所有destroy API调用都包括将'invalidate'参数设置为'true',如果您希望CDN无效。

关于URL格式;交付URL的一部分'v1576054005'是一个版本号,实际上是资产上载时间的UNIX时间戳。其主要目的是始终返回最新图像并避免CDN缓存(上传API响应返回具有最新上传版本的URL)。可以在本文中找到有关此主题的更多信息-https://support.cloudinary.com/hc/en-us/articles/202520912-What-are-image-versions

[请注意,Cloudinary可以在CDN上发送三种可能的URL格式来使它们失效,此处概述如下:https://support.cloudinary.com/hc/en-us/articles/360001208732-What-URL-conventions-are-invalidated

[无效请求会在您使用媒体库UI删除或覆盖图像时,或者在使用SDK / API并提供'invalidate'参数设置为'true'时发送。

默认情况下,所有帐户都会针对SDK生成的默认格式的URL发送无效信息,该格式对您帐户根目录中的资产不使用版本号,对文件夹中的资产使用'v1'占位符(URL中的选项1以上)。

如果使用完整版组件访问映像,那么默认情况下不会发送该映像以作废,以及为什么可能会返回缓存的副本。

在您的情况下,将发送用于无效的URL将没有版本组件(因为资源位于根文件夹中),即https://res.cloudinary.com/db9rcrnuw/image/upload/47122.png

取决于您构建URL的方式,即,如果您使用的是SDK帮助程序方法,请从Upload API响应的urlsecure_url字段(使用完整版本号)中获取URL,将确定格式,从而确定您的帐户应如何配置为无效。

[我建议您向Cloudinary支持部门发送电子邮件([email protected]),并共享此线程的链接以及有关如何生成所用URL的一些详细信息,以便可以相应地配置您的帐户。

© www.soinside.com 2019 - 2024. All rights reserved.