nodejs提示:cross-device link not permitted, rename错误的解决方法


Posted in NodeJs onJune 10, 2019

node.js提示错误:

Error: EXDEV: cross-device link not permitted, rename 'C:\Users\THEDIS~1\AppData\Local\Temp\upload_9b46f1afc2f9ade074037c3fb707d271' -> 'E:/node-rumen/tmp/test.png'

文件上传的功能时候,调用fs.renameSync方法错误

这个提示是跨区重命名文件出现的权限问题。

解决方法

先从源文件拷贝到另外分区的目标文件,然后再unlink,就可以了。

form.parse(request, function(error, fields, files) {
 console.log(“parsing done”);
 fs.renameSync(files.upload.path, “/tmp/test.png”);
});

改成

form.parse(request, function(error, fields, files) {
 console.log(“parsing done”);

 // fs.renameSync(files.upload.path, “/nodejs/case/two/img/test.png”);

 var readStream=fs.createReadStream(files.upload.path);
 var writeStream=fs.createWriteStream("./tmp/test.jpg");
 readStream.pipe(writeStream);
 readStream.on('end',function(){
  fs.unlinkSync(files.upload.path);
 });
});

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

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

util.pump(readStream,writeStream, function() {
 fs.unlinkSync('files.upload.path');
});

参考地址:https://stackoverflow.com/que...

https://stackoverflow.com/que...

方法二:

这种就简洁很多了

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

function upload(response,request){
 console.log(“upload called”);
 var form = new formidable.IncomingForm();
 form.uploadDir='tmp';

 console.log(“about to parse”);
 form.parse(request, function(error, fields, files) {
  console.log(“parsing done”);
  fs.renameSync(files.upload.path, “./tmp/test.jpg”);
  response.writeHead(200, {“Content-Type”: “text/html”});
  response.write(“received image:<br/>”);
  response.write(“<img src='/show' />”);
  response.end();
 });
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

NodeJs 相关文章推荐
用nodejs实现PHP的print_r函数代码
Mar 14 NodeJs
nodejs命令行参数处理模块commander使用实例
Sep 17 NodeJs
Nodejs极简入门教程(二):定时器
Oct 25 NodeJs
nodejs教程之入门
Nov 21 NodeJs
nodejs下打包模块archiver详解
Dec 03 NodeJs
iPhone手机上搭建nodejs服务器步骤方法
Jul 06 NodeJs
初探nodeJS
Jan 24 NodeJs
详解NODEJS基于FFMPEG视频推流测试
Nov 17 NodeJs
基于nodejs实现微信支付功能
Dec 20 NodeJs
Nodejs连接mysql并实现增、删、改、查操作的方法详解
Jan 04 NodeJs
NodeJs项目中关闭ESLint的方法
Aug 09 NodeJs
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
Nov 01 NodeJs
Nodejs异步流程框架async的方法
Jun 07 #NodeJs
nodejs log4js 使用详解
May 31 #NodeJs
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
May 30 #NodeJs
nodejs中实现修改用户路由功能
May 24 #NodeJs
nodejs实现用户登录路由功能
May 22 #NodeJs
基于nodejs的微信JS-SDK简单应用实现
May 21 #NodeJs
nodejs中实现用户注册路由功能
May 20 #NodeJs
You might like
Apache实现Web Server负载均衡详解(不考虑Session版)
2013/07/05 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
Zend Framework动作助手Url用法详解
2016/03/05 PHP
基于ThinkPHP实现的日历功能实例详解
2017/04/15 PHP
YII框架常用技巧总结
2019/04/27 PHP
Laravel 解决composer相关操作提示php相关异常的问题
2019/10/23 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
浅说js变量
2011/05/25 Javascript
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
2012/05/23 Javascript
js借助ActiveXObject实现创建文件
2013/09/29 Javascript
js HTML5上传示例代码完整版
2016/10/10 Javascript
vue2.0s中eventBus实现兄弟组件通信的示例代码
2017/10/25 Javascript
浅谈layer弹出层按钮颜色修改方法
2019/09/11 Javascript
vue项目初始化到登录login页面的示例
2019/10/31 Javascript
基于canvasJS在PHP中制作动态图表
2020/05/30 Javascript
vue使用swiper实现左右滑动切换图片
2020/10/16 Javascript
[02:19]2014DOTA2国际邀请赛 专访820少年们一起去追梦吧
2014/07/14 DOTA
探究数组排序提升Python程序的循环的运行效率的原因
2015/04/01 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
对python:循环定义多个变量的实例详解
2019/01/20 Python
搭建python django虚拟环境完整步骤详解
2019/07/08 Python
python多进程重复加载的解决方式
2019/12/13 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
2020/01/04 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
Python流程控制语句的深入讲解
2020/06/15 Python
python3中确保枚举值代码分析
2020/12/02 Python
美国眼镜网:GlassesUSA
2017/09/07 全球购物
LINUX下线程,GDI类的解释
2012/04/17 面试题
行政助理的职责
2013/11/14 职场文书
人事主管的岗位职责
2013/11/16 职场文书
生产班组长岗位职责
2014/01/05 职场文书
小学生感恩演讲稿
2014/04/25 职场文书
钳工实训报告总结
2014/11/04 职场文书
元旦晚会开场白
2015/05/29 职场文书
酒店厨房管理制度
2015/08/06 职场文书
OpenStack虚拟机快照和增量备份实现方法
2022/04/04 Servers