Lazy loaded image
技术分享
七牛云一键转存Cloudflare R2
字数 2065阅读时长 6 分钟
2024-6-12
2024-6-12
type
status
date
slug
summary
tags
category
icon
password
Property
Jun 12, 2024 03:07 AM

🎯需求:数据迁移

将七牛云的对象存储里的图片(我自认为我的图片不多,需求不高,免费额度足够够用,但是仍然被七牛云计费0.03元😡)全部迁移到Cloudflare R2中去。

🚧难点:R2迁移规则受限

R2只支持从 Amazon S3 或 Google Cloud Storage 存储桶迁移到此存储桶

🧠思路:编程替换

  1. 将vuepress文件夹下所有的markdown(.md)文件中的图片都下载到本地
  1. 然后上传到R2中得到新的图片地址
  1. 将新的图片地址写入原来的.md文件中替换掉旧的地址

🔨测试:通义灵码VS腾讯云AI代码助手

我在VSCODE中对两个AI同时提了相同的问题:
我要写个程序下载文件夹包括子文件夹内所有的.md文件中的图片,并将它们上传到cloudflare R2存储中去,然后将新的图片地址写到.md中替换掉旧地址。
  1. 腾讯云AI代码助手
    1. 请注意,您需要将your_api_keyyour_email替换为您的Cloudflare R2 API密钥和邮箱。此外,您还需要知道您的Cloudflare R2存储区域的ID(zone_id),可以在Cloudflare控制面板中找到。

  1. 通义灵码
    1. 要实现这个需求,你可以按照以下步骤编写程序。这里我以Python为例,因为Python有丰富的库支持文件操作、网络请求以及正则表达式处理文本,非常适合完成这类任务。

      步骤1: 安装必要的库

      首先,确保安装了必要的Python库。你需要requests来处理HTTP请求,regex或内置的re模块来处理正则表达式,以及tqdm来显示下载进度(可选)。

      步骤2: 递归遍历文件夹并识别.md文件

      使用os.walk()遍历文件夹及子文件夹,筛选出所有.md文件。

      步骤3: 下载并上传图片至Cloudflare R2

      你需要使用Cloudflare R2的API来上传文件。首先,确保你有正确的认证信息和桶信息。下面的示例代码展示了一个简化的上传过程,实际应用中需根据R2的官方文档进行调整。

      步骤4: 替换.md文件中的图片链接

      使用正则表达式匹配并替换.md文件中的图片链接。

      步骤5: 主函数整合

      整合上述步骤,遍历所有.md文件,下载图片,上传至R2,然后替换.md文件中的图片链接。
      注意:以上代码仅为逻辑框架示例,具体实现如图片下载、解析.md文件中的图片URL、以及与Cloudflare R2的API交互等细节需要根据实际情况进一步开发。特别是上传到R2的部分,需要根据Cloudflare提供的官方SDK或API文档来实现。
腾讯代码助手:
  • 简单、粗暴、流式很快
  • 遍历路径没有遍历到子文件夹
  • 给出请求R2的是常规请求,没有使用第三方库,基本上也不能使用
  • 替换markdown文件内容时用的BeautifulSoup,我没有找到BeautifulSoup在markdown中间的用法
  • 总结思路有,但程序不可用,需要修改多
通义灵码:
  • 给出使用python的理由,分步骤说明实现的逻辑,流式速度适中
  • 遍历文件夹与子文件夹的md文件代码直接可用
  • 各出请求R2同腾讯不可用,也没有使用第三方库
  • 替换MD文件中的图片旧URL代码直接可用
  • 提示需要自行实现提取旧图片URL并下载
  • 总结提示安装对应库(虽然这个请求库对于R2没有用,但是好评),思路清晰,分步说明并提供各对应函数,总体可以实现即使使用

实施:用通义灵码给的代码改造

  1. 安装R2客户端库
    1. 改造代码
       
      上一篇
      本地VSCODE开发nodejs项目运行服务器docker中
      下一篇
      在vercel上搭建一个图片转webp服务

      评论
      Loading...