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 相关文章推荐
PHPStorm 2020.1 调试 Nodejs的多种方法详解
Sep 17 NodeJs
nodejs的require模块(文件模块/核心模块)及路径介绍
Jan 14 NodeJs
NodeJS url验证(url-valid)的使用方法
Nov 18 NodeJs
nodejs事件的监听与触发的理解分析
Feb 12 NodeJs
实例详解Nodejs 保存 payload 发送过来的文件
Jan 14 NodeJs
Nodejs多站点切换Htpps协议详解及简单实例
Feb 23 NodeJs
NodeJS学习笔记之Module的简介
Mar 24 NodeJs
详解使用vscode+es6写nodejs服务端调试配置
Sep 21 NodeJs
NodeJs form-data格式传输文件的方法
Dec 13 NodeJs
NodeJS父进程与子进程资源共享原理与实现方法
Mar 16 NodeJs
手把手教你如何使用nodejs编写cli命令行
Nov 05 NodeJs
nodejs一个简单的文件服务器的创建方法
Sep 13 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时间戳转换的示例
2014/03/31 PHP
PHP多维数组转一维数组的简单实现方法
2015/12/23 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
javascript实现 在光标处插入指定内容
2007/05/25 Javascript
javascript 运算数的求值顺序
2011/08/23 Javascript
jquery表单验证使用插件formValidator
2012/11/10 Javascript
jquery.idTabs 选项卡使用示例代码
2014/09/03 Javascript
node.js中的path.extname方法使用说明
2014/12/09 Javascript
Backbone.js中的集合详解
2015/01/14 Javascript
jQuery插件multiScroll实现全屏鼠标滚动切换页面特效
2015/04/12 Javascript
javascript中对变量类型的判断方法
2015/08/09 Javascript
express默认日志组件morgan的方法
2018/04/05 Javascript
浅谈VUE-CLI脚手架热更新太慢的原因和解决方法
2018/09/28 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
ES5 模拟 ES6 的 Symbol 实现私有成员功能示例
2020/05/06 Javascript
解决Vue中的生命周期beforeDestory不触发的问题
2020/07/21 Javascript
Vue elementui字体图标显示问题解决方案
2020/08/18 Javascript
小程序中手机号识别的示例
2020/12/14 Javascript
[05:13]2018DOTA2亚洲邀请赛主赛事第二日战况回顾 LGD、VG双雄携手晋级
2018/04/05 DOTA
python简单读取大文件的方法
2016/07/01 Python
非递归的输出1-N的全排列实例(推荐)
2017/04/11 Python
Python实现Linux的find命令实例分享
2017/06/04 Python
如何实现删除numpy.array中的行或列
2018/05/08 Python
python实现计算器简易版
2020/12/17 Python
python工具快速为音视频自动生成字幕(使用说明)
2021/01/27 Python
css3 中translate和transition的使用方法
2020/03/26 HTML / CSS
奖学金自我鉴定范文
2013/10/03 职场文书
创建卫生先进单位实施方案
2014/03/10 职场文书
创建文明学校实施方案
2014/03/11 职场文书
《金孔雀轻轻跳》教学反思
2014/04/20 职场文书
本科毕业生自荐信
2014/06/02 职场文书
给老师的感谢信
2015/01/20 职场文书
爱国影片观后感
2015/06/18 职场文书
Nginx下SSL证书安装部署步骤介绍
2021/12/06 Servers
Python采集壁纸并实现炫轮播
2022/04/30 Python