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(三)--- Node.js模块
May 25 NodeJs
基于 Docker 开发 NodeJS 应用
Jul 30 NodeJs
nodejs中简单实现Javascript Promise机制的实例
Dec 06 NodeJs
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
Dec 18 NodeJs
进阶之初探nodeJS
Jan 24 NodeJs
详解Nodejs之静态资源处理
Jun 05 NodeJs
深入解析nodejs HTTP服务
Jul 25 NodeJs
利用nodeJs anywhere搭建本地服务器环境的方法
May 12 NodeJs
NodeJS 实现多语言的示例代码
Sep 11 NodeJs
CentOS7中源码编译安装NodeJS的完整步骤
Oct 13 NodeJs
nodejs搭建本地服务器并访问文件操作示例
May 11 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继承中方法重载(覆盖)的应用场合
2015/02/09 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
Firefox outerHTML实现代码
2009/06/04 Javascript
jQuery对象与DOM对象之间的转换方法
2010/04/15 Javascript
JavaScript随机排序(随即出牌)
2010/09/17 Javascript
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
JS下拉框内容左右移动效果的具体实现
2013/07/10 Javascript
JavaScript中的全局对象介绍
2015/01/01 Javascript
javascript中Function类型详解
2015/04/28 Javascript
jquery使用each方法遍历json格式数据实例
2015/05/18 Javascript
JS打字效果的动态菜单代码分享
2015/08/21 Javascript
动态更新highcharts数据的实现方法
2016/05/28 Javascript
js继承实现方法详解
2016/12/16 Javascript
bootstrap常用组件之头部导航实现代码
2017/04/20 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
2019/10/20 Javascript
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
2020/04/21 Javascript
[53:20]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 VG vs OG
2018/04/03 DOTA
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
2017/03/11 Python
Python3.4编程实现简单抓取爬虫功能示例
2017/09/14 Python
浅谈Python脚本开头及导包注释自动添加方法
2018/10/27 Python
Python实现查找最小的k个数示例【两种解法】
2019/01/08 Python
python 用户交互输入input的4种用法详解
2019/09/24 Python
查看keras各种网络结构各层的名字方式
2020/06/11 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
馥绿德雅美国官方网站:Rene Furterer头皮护理专家
2019/05/01 全球购物
护理专业本科生自荐信
2013/10/01 职场文书
2014年六一儿童节演讲稿
2014/05/23 职场文书
党员民主生活会整改措施
2014/09/26 职场文书
优质服务心得体会(共4篇)
2016/01/22 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers
JAVA springCloud项目搭建流程
2022/05/11 Java/Android