最近用 AI 编程工具写了一个简易的文件上传下载 java 后台系统,主要用来当做私人图床,平时写文章笔记时都需要用到。
自己写文章笔记并发布的过程是先用 markdown 格式将文章在本地写好,markdown 里的图片先用本地的,然后在发布前用 AI 编写的小工具解析 markdown 里的本地图片,上传到自建服务器,然后将本地图片替换为自建服务器的图片下载链接(不得不说有 AI 编程工具后,很多东西写起来真快,确实好用),最后将有图片链接的 markdown 文章粘贴到各个平台(注:微信公众号不支持 markdown 格式,但可以通过其它工具将 markdown 格式转成公众号格式),每个平台会在粘贴时自动将图片链接解析转成自己平台的图片链接,这样就不用在每个平台发文章时手动上传本地图片了
整个过程看起来很完美。然后,又到了然后,事情总有意外。
当我文章复制粘贴到掘金和微信公众号编辑器里时,总时提示无法解析转存图片,我再三确认了这些图片链接是可以正常下载的,而且在 vscode 中的 markdown 预览工具里也能正常预览,这就奇怪了,问题出在哪里呢?
这种问题毫无头绪,为了尽快完成发布文章的任务,不得不先手动一个个将图片插入各个平台编辑器里!!!
发布完后躺了会儿,想了想这个问题还是要解决的,不然每次又要手动插入图片,太麻烦了。但问题出在哪里呢?
难道是域名备案的问题? 因为这个服务器是买的海外的,域名也是在 cloudflare 上购买的,所以无法备案。 但转念一想,只是解析图片转存而已,并不需要管它是备案吧,况且要是每个图片链接都要先检测是否备案那得多麻烦,对备案服务器的压力那可是相当大的。遂排除了这个可能。
难道是因为我那些图片链接都带的参数比较特别导致拒绝解析? 这也不能吧,毕竟图片链接带参数很正常。但为验证这个问题,我将那个域名下部署的网站里的无参数的图片链接粘贴过去是竟然能正常解析的。 难道真的是因为参数问题?不可能吧。不至于这么蠢吧。 但一时半会想不到其它原因。所以就修改了下服务器代码并重新部署上去。再次测试,发现问题依旧。
。。。彻底无语了
这两种链接之间到底有什么区别呢。都能在浏览器里访问下载,都能在vscode中的markdown预览插件中正常显示,但就是一个能解析一个不能解析,真是奇葩。
正当我快要放弃的时候,突然想到一个现象,为啥单独在浏览器里打开网站里的图片链接是预览,而打开自建服务器的图片链接是下载呢? 问了下deepseek
看到deepseek的解释,我立即查看了下代码,发现代码里的contenttype确实是octet-stream类型的。
不会真的是这个原因导致无法解析的吧?抱着试试的心态改了代码重新部署下,测试发现真的能正常解析了。实在想不通为啥octet-stream类型就强制无法解析转存。还好靠运气解决了这个问题,没有这个运气谁能想到会存在这样的逻辑。
感叹下修复问题有时候很需要运气!!!!!