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中exports与module.exports的区别详细介绍
Jan 14 NodeJs
Nodejs异步回调的优雅处理方法
Sep 25 NodeJs
nodejs中简单实现Javascript Promise机制的实例
Dec 06 NodeJs
nodejs中的fiber(纤程)库详解
Mar 24 NodeJs
Nodejs express框架一个工程中同时使用ejs模版和jade模版
Dec 28 NodeJs
浅谈NodeJs之数据库异常处理
Oct 25 NodeJs
Nodejs让异步变成同步的方法
Mar 02 NodeJs
详解Nodejs get获取远程服务器接口数据
Mar 26 NodeJs
linux 下以二进制的方式安装 nodejs
Feb 12 NodeJs
nodejs使用socket5进行代理请求的实现
Feb 21 NodeJs
nodejs使用Sequelize框架操作数据库的实现
Oct 21 NodeJs
NodeJs使用webpack打包项目的方法详解
Feb 28 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 SPL使用方法和他的威力
2013/11/12 PHP
php数组添加元素方法小结
2014/12/20 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
2016/01/19 PHP
javascipt基础内容--需要注意的细节
2013/04/10 Javascript
jquery插件之定时查询待处理任务数量
2014/05/01 Javascript
jQuery动态创建html元素的常用方法汇总
2014/09/05 Javascript
使用jquery菜单插件HoverTree仿京东无限级菜单
2014/12/18 Javascript
js实现在网页上简单显示时间的方法
2015/03/02 Javascript
微信小程序 欢迎界面开发的实例详解
2016/11/30 Javascript
JavaScript制作弹出层效果
2016/12/02 Javascript
js实现一个猜数字游戏
2017/03/31 Javascript
mui上拉加载功能实例详解
2017/04/13 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
vue.js中引入vuex储存接口数据及调用的详细流程
2017/12/14 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
七行JSON代码把你的网站变成移动应用过程详解
2019/07/09 Javascript
Vue-cli打包后如何本地查看的操作
2020/09/02 Javascript
Python数组遍历的简单实现方法小结
2016/04/27 Python
使用tensorflow实现AlexNet
2017/11/20 Python
Python编程实现二分法和牛顿迭代法求平方根代码
2017/12/04 Python
django使用JWT保存用户登录信息
2020/04/22 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
2020/10/15 Python
豆腐の盛田屋官网:日本自然派的豆乳面膜、肥皂、化妆水、乳液等
2016/10/08 全球购物
一加手机美国官方网站:OnePlus美国
2019/09/19 全球购物
机械设计毕业生自荐信
2014/02/02 职场文书
最新奶茶店创业计划书范文
2014/02/08 职场文书
环保倡议书范文
2014/05/12 职场文书
公司新人试用期自我评价
2014/09/17 职场文书
2014年学生会个人工作总结
2014/11/07 职场文书
夫妻双方自愿离婚协议书怎么写
2014/12/01 职场文书
婚宴父母致辞
2015/07/27 职场文书
幽默导游词应该怎么写?
2019/08/26 职场文书
Nginx配置文件详解以及优化建议指南
2021/09/15 Servers
python实现会员管理系统
2022/03/18 Python
Golang 实现WebSockets
2022/04/24 Golang