node.js使用formidable上传本地图片的问题

最近在学习node.js,参照《Node入门》这本书写到最后一个本地图片上传的时候出现一些问题,运行的时候老是报错

Error: ENOENT: no such file or directory, rename 'C:UsersADMINI~1AppDataLocalTempupload_9cb0b2d8ce4ef6562c00d5
a874de0f97' -> '/tmp/test.png'

在百度上搜索解决办法,大多数说是路径不正确。

就是说fs.renameSync(files.upload.path, "/tmp/test.png")的"/tmp/test.png"不正确

于是我将行对路径改为绝对路径,问题还是没有解决,于是我有把路径改为了硬盘中的路径(需加转义符),这时出现了新的报错信息:

上传Error: EXDEV: cross-device link not permitted, rename 'C:UsersADMINI~1AppDataLocalTempupload_ab5d945e3b36668bc

100d7e035750d77' -> 'D:Program Files odejs mp est.png'

意思是说不允许跨磁盘命名文件,就是说不能把C盘的文件重命名到D盘。然后我在C盘新建一个tmp文件,将fs.renameSync(files.upload.path, "/tmp/test.png")改成C盘下的路径,问题得到了解决。

formidable的默认保存路径是:“C:UsersAdministratorAppDataLocalTemp”,但是这并不是我想要的,没有人喜欢把文件保存到C盘。

于是我在文挡中找到了修改formidable存储路径的方法:

var form = new formidable.IncomingForm();
form.uploadDir = "/nodeTest/tmp"; //存储路径

然后完美解决问题

原文地址:https://www.cnblogs.com/zpfqi/p/11715043.html