文章目录

  • 一、事件起因
  • 二、方案选择
  • 三、资源替换
    • 1、解封原 gitee 库
    • 2、上床资源到 OSS
    • 3、单篇文章图片访问路径替换
    • 4、全文件夹图片访问路径替换
  • 四、小结

一、事件起因

今天下午正在思考人生呢,突然收到 gitee 官方发来的邮件

赶忙上网查相关信息,发现 3.25 日 gitee 官网对仓库外链进行了一波清查

好家伙,自己 typora 里有几百篇文章呢,现在全部变成了这种画风

欣慰的是,CSDN 和 公众号上的文章在上传前,会重新拉去一次图片再转存到自己的服务器上,所以受到波及的只有自己的 typora

二、方案选择

固然,gitee 被封了,还有 github 可以选择,但是尝试过用 github 做图片库,上传速度实在感人,故放弃

免费的方案还有微信小程序图床哔哩哔哩图床,但是二者不知道后续经营状况如何,也不知道后续收费情况如何,因为图床最重要的一点就是稳定,故放弃

目前看来,只有各大公司提供的 OSS 服务比较靠谱了,这里最终选择阿里云的 OSS 服务

鉴于我们只需要存储图片,单个图片大小控制在 50kB 以内,以一篇文章50个图片来统计,就算天天写文章,一年流量上行也超不过 1G,所以买 40G 流量包足以

趁着优惠,一口气买了三年,也只要24元

具体的 OSS 购买和配置流程,可以点击下面这个链接观看:

ytpora+picgo+oss配置教程

三、资源替换

在确认配置完 OSS ,并能成功上传后,我们进行接下来的操作

1、解封原 gitee 库

我们需要获取之前的所有图片资源,因为之前每次上传时,都会将图片以时间戳的形式赋予一个唯一名称,这在我们后面换访问连接的时候是至关重要的

但是在仓库被封的情况下,我们是无法去下载的

这个时候就需要声泪俱下的给 gitee 官方写一封信

快的话,大概等一天左右就会解封,这个时候赶快将仓库资源下载下来

2、上床资源到 OSS

下载完成后,我们将文件夹解压并上传到我们的 OSS

上传前必须选择 公共读,不然可能 typora 无法访问

3、单篇文章图片访问路径替换

我们观察一下 gitee 和 oss 上传后返回的图片访问路径,只有指向不同服务器的前缀不一样,所以只要替换这部分就行

我们直接在 typora 中快捷键 commend+f 查找替换即可

4、全文件夹图片访问路径替换

很可惜 ,typora 只支持单篇文章全文替换,整个文件夹文件内容无法直接替换,这里我们自己写个脚本解决

替换前,先将我们当前的 typora 文章库做个备份,避免出现意料之外的结果

接下来,运行下面这段 java 脚本
运行前别忘了替换 <> 里的内容

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;/*** @ClassName ChangePicPath* @Description 修改指定文件夹中的所有信息* @Author faro_z* @Date 2022/3/26 5:18 下午* @Version 1.0**/
public class ChangePicPath {private static String folderName = "<你的文章所在的文件夹的全路径名>";private static String from = "<图片访问路径中待替换的部分>";private static String to = "<图片访问路径中被替换成的部分>";private static List<String> errFileNameList = new ArrayList<>();public static void main(String[] args) throws IOException {List<String> pathList = getAllFileName(folderName);System.out.println("成功获取所有文件名称!");System.out.println("第一个文件名称为:"+pathList.get(0));// 如果发现文件名称和预期的不一样,别误操作了System.out.println("输入任意数字,再按回车键继续...");new Scanner(System.in).nextInt();int errCount = 0;for (String path : pathList) {if (!changeFileContent(from,to,path)) {errCount++;}}System.out.println("出错文件数为:"+errCount);System.out.println("所有出错文件名为:");for (String errPath : errFileNameList) {System.out.println(errPath);}}/*** 获取当前文件夹下所有文件名(不包括文件夹名)* @param folderName* @return*/private static List<String> getAllFileName(String folderName) {ArrayList<String> filePathList = new ArrayList<>();dfs(folderName,filePathList);return filePathList;}/*** 递归获取文件名* @param path* @param filePathList*/private static void dfs(String path, List<String>filePathList) {File file = new File(path);if (file.isFile() && file.getName().endsWith(".md")) {filePathList.add(file.getAbsolutePath());return;}if (file.isDirectory()) {File[] files = file.listFiles();for (File tmpFile : files) {dfs(tmpFile.getAbsolutePath(),filePathList);}}}private static boolean changeFileContent(String from,String to,String filePath) {File file = new File(filePath);try {FileReader fileReader = new FileReader(file);BufferedReader bufferedReader = new BufferedReader(fileReader);CharArrayWriter tempStream = new CharArrayWriter();String line = null;while ((line = bufferedReader.readLine()) != null) {line = line.replaceAll(from,to);tempStream.write(line);tempStream.append(System.getProperty("line.separator"));}bufferedReader.close();// 将内存中的流 写入 文件FileWriter out = new FileWriter(file);tempStream.writeTo(out);out.close();} catch (IOException e) {errFileNameList.add(filePath);return false;}return true;}
}

运行结束后,我们再看看之前的文章

可以返发现,已经全部恢复了

四、小结

还好这次封库波及的范围不大,没有涉及到我上传的文章,不然要一篇篇修改才是真的痛苦

这次的事件告诉我们,在使用的免费产品或者薅羊毛的时候,一定要慎重,不然出现问题的时候,有的你哭

这次换图床后,我还有一个惊喜的发现,那就是图片的上传速度大幅提升,上传大图的时候也不会平白无故的失败了,多花了 24元

gitee 图床因外链访问过多被封,我们该怎么办相关推荐

  1. (Ⅲ)使用七牛云作为图床获取外链方式总结(已更换为使用PicGO+腾讯云COS)

    1. 图床的选择 (1) 什么是图床? 很多技术人写作都有在用 Markdown 轻量级标记语言进行博客写作,这种写作让我们不用像使用 Word 那么麻烦调整排版和格式,而只需专心写作照样完成排版的一 ...

  2. (Ⅲ)使用七牛云作为图床获取外链方式总结(已更换为使用PicGO+腾讯云COS)...

    1. 图床的选择 (1) 什么是图床? 很多技术人写作都有在用 Markdown 轻量级标记语言进行博客写作,这种写作让我们不用像使用 Word 那么麻烦调整排版和格式,而只需专心写作照样完成排版的一 ...

  3. 1.exe文件改后缀,2网盘挂载我的电脑3.qq反查手机号,4.盘扩容,5图床免费外链6.ppt免费素材

    重命名状态下右键插入,后缀需反着写 回车enter 准备ResourceHacker工具 图标修改失败告终 2.微信公众号咔咔闲谈回复空间 3. https://qq.bunny.icu/?=F0D7 ...

  4. 从零开始免费搭建自己的博客(五)——Typora + PicGo + GitHub/Gitee图床

    ​ 本文是博客搭建系列文章第五篇,其他文章链接: 从零开始免费搭建自己的博客(一)--本地搭建 Hexo 框架 从零开始免费搭建自己的博客(二)--基于 GitHub pages 建站 从零开始免费搭 ...

  5. gitee图床用不了,阿里云OSS搭建图床(非常详细)

    文章目录 1. 购买阿里云oss对象存储服务 2. 新建OSS Bucket 3. 配置OSS资源访问域名 4. 配置picGO 4. 将gitee图床图片迁移到OSS中 最近,打开自己的markdo ...

  6. 使用Picgo自动上传本地图片教程(typora+gitee图床)

    使用Picgo自动上传本地图片教程(typora) 注意! : 2022/3/25日起gitee不能用于图床了 gitee加了防盗链,所有图片的都访问不了了!!! 大家请选择其他的图床存放图片!!! ...

  7. SpringBoot整合Gitee图床

    转载自:Springboot实战:实现本地上传图片到Gitee图床(含完整代码),并在其基础上增加了删除功能~!! 1.查看Gitee官方文档 https://gitee.com/api/v5/swa ...

  8. 最近gitee图床抽风,考虑迁移图床了

    最近gitee图床抽风,考虑迁移图床了 发现问题--传到gitee图床的图片没了 之前 vscode + picgo + gitee 处理 markdown 笔记里的图片,但 picgo 突然不能用了 ...

  9. Typora gitee图床迁移github图床教程(图文详细)

    目录 一.GitHub配置 二.Picgo的配置 三.将gitee仓库导入到GitHub中 四.批量修改图片路径 就在前几天,gitee宣布将开源仓库全部人工审核,在审核到图床仓库时,显示 因此为了保 ...

最新文章

  1. 【PAT乙级】1025 反转链表 (25 分)
  2. 今晚直播 | AAAI 2022论文解读:重新思考图像融合策略和自监督对比学习
  3. 洛谷 P1615 西游记公司
  4. html css配色方案,链接css不同的配色方案问题
  5. mysql show table column_mysql show columns 等show的用法
  6. 我说省略号然后点点点点点点
  7. linux安装nfs服务器
  8. Qt5开发及实例学习之监听目录
  9. SQL Server 2005 性能优化实战系列(文章索引)
  10. C#如何获取物理网卡,虚拟网卡,以及无线网卡
  11. 最齐全的地面贴图素材,速来收藏
  12. XP不能访问Win7共享
  13. 使用java,求100以内的质数(素数)
  14. c语言 dirent,dirent / opendir(), readdir()
  15. linux将目录打包压缩,Linux系统文件、目录及文件系统的压缩与打包详解
  16. [杀形态验证]3D准确率达98
  17. 一组绝对有益于科研的随想录(转载)
  18. 破解版百度云【亲测好用】完美解决限速
  19. 首屈一指的全球招聘与薪资支付平台Deel收购Zeitgold,以增强薪资和人工智能服务
  20. linux 光标切换快捷键,光标操作快捷键,光标快捷键

热门文章

  1. passport策略之passport-facebook使用facebook认证
  2. 视频传输解决方案,让视频会议更高效
  3. Unable to locate tools.jar. Expected to find it in........
  4. 我决定谈一谈世界上最著名的虫子:BUG !
  5. YL-56声音检测模块
  6. jenkins部署 java项目到远程 windows服务器
  7. python 实现邮件批量发送(你懂得)
  8. 【博学谷学习记录】超强总结,用心分享|狂野架构师之比较常用的技术栈整合
  9. 354、什么是三网合一?三网合一如何建设
  10. Tello Scratch使用说明