踩坑

2019-05-02  本文已影响0人  阿碎Abser

该踩的坑


今天改了改自己模块,暂时把 jwt 的验证取消了, 让竞书重新部署的时候,被竞书发现了一个关于上传文件之后,文件为空的问题。

仔细检查了这部分io.Copy的代码,是怎么也没有看到错误的地方。对比网上的写法也是分毫不差,经过一些日志的调写之后,能知道是在拷贝文件的时候,File这个变量 read 出来会得到EOF ,想破脑袋也想不出来这是什么原因。猜测可能是出现在从 request 中读取的时候就是空的,但是又一次测试发现header里面和file里面都是有文件的。<br />最后被竞书发现了原因,原来是在进行这两个读取和拷贝的操作之间,调用了一次函数,用来把文件 md5 之后查找数据库看看是不是已经上传了该文件,在这个函数中,已经写过了一次io.Copy函数,而file从request中读取的是流,在此次读取中就已经读完了,后面的第二次把文件拷贝到系统上自然是会读取到空。(由于不是自己写的代码模块,都没有注意到这里有一个io.Copy的调用)

之前在讲解的时候也说过这一个坑,当时还想的是我听过之后,以后遇到这种问题一定会注意到,不然就太笨逼了,实际上在现在遇到了我也没有想到这个问题。

  1. 一是自己的经验太少,以为不会出问题的地方会出问题
  2. 二是使用的是别人的代码,但是查找问题的时候没有想到是别人的
  3. 三是自己使用别人的代码的时候过于相信别人的代码,导致没有深入测试这个功能。

总之,再以为自己不会犯的错误,实际上不经历过还是无法知道是不是真的在遇到这样的坑的时候会跳过它。


<a name="d5cc6d0e"></a>

对于劫数的快速反应。

如果不是经历过,是确实不会明白个中道理的。所以如果你确实要去做某一件事,听别人的劝诫也不是会能躲过坑洞,别人的劝诫听到心里最大的好处就是你下次踩这个坑时,能够很快明白理顺发生了什么。进行一个快速反应。可能这也是所谓的命中注定有此一劫的说法的现实生活来源吧

上一篇下一篇

猜你喜欢

热点阅读