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 相关文章推荐
golang、python、php、c++、c、java、Nodejs性能对比
Mar 12 NodeJs
nodeJS代码实现计算交社保是否合适
Mar 09 NodeJs
Nodejs Stream 数据流使用手册
Apr 17 NodeJs
nodejs操作mysql实现增删改查的实例
May 28 NodeJs
nodejs爬虫初试superagent和cheerio
Mar 05 NodeJs
nodejs实现解析xml字符串为对象的方法示例
Mar 14 NodeJs
nodejs简单访问及操作mysql数据库的方法示例
Mar 15 NodeJs
nodejs 简单实现动态html的方法
May 12 NodeJs
基于nodejs res.end和res.send的区别
May 14 NodeJs
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
Nov 01 NodeJs
Nodejs监听日志文件的变化的过程解析
Aug 04 NodeJs
详解NodeJs项目 CentOs linux服务器线上部署
Sep 16 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
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
laravel 创建命令行命令的图文教程
2019/10/23 PHP
JavaScript 事件参考手册
2008/12/24 Javascript
jquery的flexigrid无法显示数据提示获取到数据
2013/07/19 Javascript
javascript显示用户停留时间的简单实例
2013/08/05 Javascript
使用js实现关闭js弹出层的窗口
2014/02/10 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
2015/09/15 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
2016/02/17 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
JS组件系列之MVVM组件构建自己的Vue组件
2017/04/28 Javascript
Bootstrap datepicker日期选择器插件使用详解
2017/07/26 Javascript
基于iScroll实现内容滚动效果
2018/03/21 Javascript
vue中axios的封装问题(简易版拦截,get,post)
2018/06/15 Javascript
详解关于element级联选择器数据回显问题
2019/02/20 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
泛谈JS逻辑判断选择器 || &amp;&amp;
2019/05/24 Javascript
layui实现多图片上传并限制上传的图片数量
2019/09/26 Javascript
js消除图片小游戏代码
2019/12/11 Javascript
基于JS正则表达式实现模板数据动态渲染(实现思路详解)
2020/03/07 Javascript
Vue如何基于es6导入外部js文件
2020/05/15 Javascript
[50:27]Secret vs VG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[01:09:23]KG vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python实现线程池代码分享
2015/06/21 Python
浅谈插入排序算法在Python程序中的实现及简单改进
2016/05/04 Python
Python反射的用法实例分析
2018/02/11 Python
django 通过url实现简单的权限控制的例子
2019/08/16 Python
Python xlrd/xlwt 创建excel文件及常用操作
2020/09/24 Python
html5 canvas的绘制文本自动换行的示例代码
2018/09/17 HTML / CSS
加拿大票务网站:Ticketmaster加拿大
2017/07/17 全球购物
加拿大租车网站:Enterprise Rent-A-Car
2018/07/26 全球购物
学生学习总结的自我评价
2013/10/22 职场文书
国际贸易专业个人求职信范文分享
2013/12/14 职场文书
大学毕业生自荐书怎么写?
2014/01/06 职场文书
大专学生求职自荐信
2014/07/06 职场文书
2014年教育培训工作总结
2014/12/08 职场文书
学术研讨会主持词
2015/07/04 职场文书