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中转换URL字符串与查询字符串详解
Nov 26 NodeJs
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
Aug 21 NodeJs
详解nodejs 文本操作模块-fs模块(四)
Dec 22 NodeJs
详解nodejs微信公众号开发——5.素材管理接口
Apr 11 NodeJs
详解HTTPS 的原理和 NodeJS 的实现
Jul 04 NodeJs
nodejs使用redis作为缓存介质实现的封装缓存类示例
Feb 07 NodeJs
nodejs实现获取本地文件夹下图片信息功能示例
Jun 22 NodeJs
nodejs语言实现验证码生成功能的示例代码
Oct 13 NodeJs
nodejs实现百度舆情接口应用示例
Feb 07 NodeJs
NodeJS配置CORS实现过程详解
Dec 02 NodeJs
nodejs中使用worker_threads来创建新的线程的方法
Jan 22 NodeJs
nodejs利用readline提示输入内容实例代码
Jul 15 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
前端必学之PHP语法基础
2016/01/01 PHP
使用php实现网站验证码功能【推荐】
2017/02/09 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
js 编程笔记 无名函数
2011/06/28 Javascript
FF火狐下获取一个元素同类型的相邻元素实现代码
2012/12/15 Javascript
JavaScript实现三阶幻方算法谜题解答
2014/12/29 Javascript
JavaScript实现点击自动选择TextArea文本的方法
2015/07/02 Javascript
jQuery调用WebMethod(PageMethod) NET2.0的方法
2016/04/15 Javascript
jQuery的promise与deferred对象在异步回调中的作用
2016/05/03 Javascript
jquery实现点击弹出可放大居中及关闭的对话框(附demo源码下载)
2016/05/10 Javascript
JavaScript的for循环中嵌套一个点击事件的问题解决
2017/03/03 Javascript
js获取地址栏参数的两种方法
2017/06/27 Javascript
js插件实现图片滑动验证码
2020/09/29 Javascript
npm全局模块卸载及默认安装目录修改方法
2018/05/15 Javascript
详解使用vue-admin-template的优化历程
2018/05/20 Javascript
vue 清空input标签 中file的值操作
2020/07/21 Javascript
jquery实现广告上下滚动效果
2021/03/04 jQuery
[03:42]2014DOTA2西雅图国际邀请赛7月9日TOPPLAY
2014/07/09 DOTA
利用Pandas读取文件路径或文件名称包含中文的csv文件方法
2018/07/04 Python
python redis 批量设置过期key过程解析
2019/11/26 Python
简单了解python字符串前面加r,u的含义
2019/12/26 Python
Django --Xadmin 判断登录者身份实例
2020/07/03 Python
Python自动登录QQ的实现示例
2020/08/28 Python
蔻驰法国官网:COACH法国
2018/11/14 全球购物
Pop In A Box英国:Funko POP搪胶公仔
2019/05/27 全球购物
机械工程师的岗位职责
2013/11/17 职场文书
《第一朵杏花》教学反思
2014/04/16 职场文书
关于护士节的演讲稿
2014/05/26 职场文书
党员学习新党章思想汇报
2014/10/25 职场文书
村党支部书记个人对照材料汇报
2014/10/26 职场文书
护士个人年终总结
2015/02/13 职场文书
纪委立案决定书
2015/06/24 职场文书
幼儿园教师辞职信
2019/06/21 职场文书
Mybatis是这样防止sql注入的
2021/12/06 Java/Android
python读取mat文件生成h5文件的实现
2022/07/15 Python