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

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

Error: ENOENT: no such file or directory, rename 'C:\Users\ADMINI~1\AppData\Local\Temp\upload_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:\Users\ADMINI~1\AppData\Local\Temp\upload_ab5d945e3b36668bc

100d7e035750d77' -> 'D:\Program Files\nodejs\tmp\test.png'

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

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

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

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

然后完美解决问题

猜你喜欢

转载自www.cnblogs.com/zpfqi/p/11715043.html
今日推荐