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中的非阻塞方法介绍
Jun 05 NodeJs
用nodejs写的一个简单项目打包工具
May 11 NodeJs
轻松创建nodejs服务器(5):事件处理程序
Dec 18 NodeJs
详解Nodejs基于mongoose模块的增删改查的操作
Dec 21 NodeJs
nodejs操作mysql实现增删改查的实例
May 28 NodeJs
关于Mac下安装nodejs、npm和cnpm的教程
Apr 11 NodeJs
NodeJS安装图文教程
Apr 19 NodeJs
nodejs读取并去重excel文件
Apr 22 NodeJs
Nodejs异步流程框架async的方法
Jun 07 NodeJs
NodeJs crypto加密制作token的实现代码
Nov 15 NodeJs
nodejs实现百度舆情接口应用示例
Feb 07 NodeJs
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
May 30 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
PHP5中使用PDO连接数据库的方法
2010/08/01 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
2016/01/07 PHP
php版微信公众平台入门教程之开发者认证的方法
2016/09/26 PHP
CI框架附属类用法分析
2018/12/26 PHP
为你的网站增加亮点的9款jQuery插件推荐
2011/05/03 Javascript
使用jquery操作session方法分享
2015/01/22 Javascript
JavaScript实现数据类型的相互转换
2016/03/06 Javascript
原生js实现autocomplete插件
2016/04/14 Javascript
Ajax的概述与实现过程
2016/11/18 Javascript
Bootstrap Multiselect 常用组件实现代码
2017/07/09 Javascript
原生js实现form表单序列化的方法
2018/08/02 Javascript
javascript将非数值转换为数值
2018/09/13 Javascript
详解用JS添加和删除class类名
2019/03/25 Javascript
小程序scroll-view安卓机隐藏横向滚动条的实现详解
2019/05/16 Javascript
React+TypeScript+webpack4多入口配置详解
2019/08/08 Javascript
解决layer.prompt无效的问题
2019/09/24 Javascript
Python实现身份证号码解析
2015/09/01 Python
利用ctypes获取numpy数组的指针方法
2019/02/12 Python
详解Python:面向对象编程
2019/04/10 Python
Django 重写用户模型的实现
2019/07/29 Python
python pandas 时间日期的处理实现
2019/07/30 Python
numpy:找到指定元素的索引示例
2019/11/26 Python
提升python处理速度原理及方法实例
2019/12/25 Python
CSS3中的注音对齐属性ruby-align用法指南
2016/07/01 HTML / CSS
古驰英国官网:GUCCI英国
2020/03/07 全球购物
信息部岗位职责
2013/11/12 职场文书
英文自荐信
2013/12/15 职场文书
汽车运用工程专业毕业生推荐信
2013/12/25 职场文书
校园安全教育广播稿
2014/02/17 职场文书
高中毕业生的个人自我评价
2014/02/21 职场文书
小学生美德少年事迹材料
2014/08/24 职场文书
影视广告专业求职信
2014/09/02 职场文书
餐厅收银员岗位职责
2015/04/07 职场文书
上学路上观后感
2015/06/16 职场文书
幼儿园园长新年寄语
2015/08/17 职场文书
vue实现书本翻页动画效果实例详解
2022/04/08 Vue.js