解决Node.js调用fs.renameSync报错的问题(Error: EXDEV, cross-device link not permitted)

今天开始学习Node.js,在写一个文件上传的功能时候,调用fs.renameSync方法错误

 

出错代码所在如下:

大致分析后,预计是因为跨磁盘分区移动或操作文件会有权限问题。

下面提供两种解决办法:

方法一:

主要利用fs的createReadStream、createWriteSream和unlinkSync方法

具体代码如下:

PS:我用的node版本是0.10.69,如果使用的是0.6以下的版本,可以使用util.pump

相应代码只需将上面的代码中readStream.on处改成:(注意引入util模块)

 

方法二:

这种就简洁很多了

添加一个 form.uploadDir=’tmp' 即可(写一个临时路径)

解决问题后,就可以很开心的继续我的Node学习了,感觉路还很长啊

 

PS:附上两个有关Node文件上传的帖子,个人觉得挺不错的,来源都是cnode

 

from:https://www.cnblogs.com/glczero/archive/2014/08/23/3932024.html