对于工作中经常遇到 ipynb
文章上传后,图片丢失或者图片过大的问题。可以做如下讨论:
- 使用插入图片的方式一张一张插入?
- 通过程序员去修改?
- 通过程序批量替换
最科学的方式应该是通过程序批量替换
那么批量替换怎么达到效果?只上传ipynb
文件是不行的。因为有些图片用的是相对地址、有的用的是base64。如何解决?
- 文件夹上传、解压。
- 找到
ipynb
文件存入数组。把文件的地址也进行记录 - 读取
ipynb
文件进行解析。 - 找到图片后,先给其指定
对象存储
地址,直接替换,并且把方法存入数组。 - 最终再成替换,把文件内容(不包含base64以及相对地址的文件)进行保存
方法 转换为 代码思路
对于上面步骤中,一些着重点进行讲解。
- 第二点为什么把文件的地址也进行记录?
原因是当前文件中包含的图片的相对地址是以当前文件的地址来记录的。 - 解析文件,一般来讲文件解析,都是通过正则生成json。再通过循环对比进行。不过ipynb是天然的json。所以不需要正则生成json。
- 找到图片后,先给其指定
对象存储
地址,直接替换,并且把方法存入数组?
因为如果每替换一张图片,完成上传后再替换下一张,会导致流程过慢,可以直接把内容中的图片地址直接替换,再把方法存入数组,最终promise.all方法进行批量上传。这样就会很快完成解析流程。最终图片上传完毕后,也可以对其做其它功能。
最终
许多同学会想如果是一篇文章还好,如果是许多文章都用这个方法,那么整个流程可能会卡到我的主服务。有没有方式呢?
可以通过另起一个服务专门做转换服务。
![](https://img.haomeiwen.com/i2004452/3d800ce4c862d8af.png)
网友评论