跟打代码学习NodeJS教程,在使用fs.renameSync()方法时报错:
EXDEV: cross-device link not permitted
(教程:http://blog.csdn.net/binyao02...)
以下是代码截图:
以下是报错截图:
我推测的可能:
① windows系统与NodeJS/fs冲突
② fs.renameSync方法需要其他参数或者逻辑或者条件
③ 原先在/tmp/下有一个test.png,可能会起冲突?(这个问题不可能、我已经改了那个文件的文件名了)
百思不得其解.......
自问自答:(经过进一步研究、查阅相关的博客.资料,整理了一下)
首先,fs.renameSync()方法不能跨磁盘操作。也就是说在Windows环境中,确实会遇到如本问题提到的报错:
EXDEV: cross-device link not permitted
然后,查到并亲测有效的解决方案:
方案一:(“临时路径”法)
创建form实例(new formidable.IncomingForm())后,form.uploadDir = "tmp",
再用 fs.renameSync() 即可解决。
方案二:(createReadStream + createWriteStream + unlinkSync法)
创建form实例(new formidable.IncomingForm())后,不再进行 fs.renameSync() ,改由: