用nodejs和UEditor做了个发表动态的功能,然而图片却出现了上传失真,少一截的问题。

UEditor是直接用github上的ueditor模块,地址是:https://github.com/netpi/ueditor

刚开始在本地运行是没有问题的,上传图片可以完整传输过去后台,但是放在线上的服务器后,图片经常显示不全,各种失真模糊。开始一直以为是UEditor插件压缩问题,于是在config.json里面把压缩配置取消了,也看了很久的UEditor官网的API文档,可是结果还是一样,最后只能把思路放在node模块了。最后努力寻找一番,在模块ueditor里面找到了问题所在,找到里面的index.js的代码,如下:

上面代码中, file.pipe(fs.createWriteStream(tmpdir))方法创建文件流,然后下面是模块fs-extra的fse.move()方法,把文件移动到指定的文件夹,图片上传显示不全的原因就是在这两句代码中。首先上面的fs.createWriteStream()创建文件流执行需要一定的时间,会存在一定的情况,文件没有创建完就执行了下面fes.move()方法,于是把不完整的图片移动到了服务器里面。

解决的方法是判断 file.pipe(fs.createWriteStream(tmpdir))是否创建完,再执行下一步,另外一个比较简单的方法就是设置一个定时器让createWriteStream()执行完。

虽然是个很小的问题,但还是很开心能自己动手找到原因。

3 收藏


直接登录

推荐关注