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 21 NodeJs
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
Nov 21 NodeJs
图片上传之FileAPI与NodeJs
Jan 24 NodeJs
windows 下安装nodejs 环境变量设置
Feb 02 NodeJs
NodeJS学习笔记之Module的简介
Mar 24 NodeJs
NodeJs安装npm包一直失败的解决方法
Apr 28 NodeJs
Nodejs实现多文件夹文件同步
Oct 17 NodeJs
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
May 30 NodeJs
Nodejs技巧之Exceljs表格操作用法示例
Nov 06 NodeJs
Sublime Text3 配置 NodeJs 环境的方法
May 20 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 下载保存文件保存到本地的两种实现方法
2013/08/12 PHP
PHP利用header跳转失效的解决方法
2014/10/24 PHP
PHP的拦截器实例分析
2014/11/03 PHP
一款简单实用的php操作mysql数据库类
2014/12/08 PHP
JavaScript使用IEEE 标准进行二进制浮点运算产生莫名错误的解决方法
2011/05/28 Javascript
读jQuery之十一 添加事件核心方法
2011/07/31 Javascript
自动最大化窗口的Javascript代码
2013/05/22 Javascript
ajax读取数据后使用jqchart显示图表的方法
2015/06/10 Javascript
javascript实现添加附件功能的方法
2015/11/18 Javascript
深入浅析JavaScript中的作用域和上下文
2016/03/26 Javascript
js实现简单的碰壁反弹效果
2016/08/30 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
过期软件破解办法实例详解
2017/01/04 Javascript
jQuery通过改变input的type属性实现密码显示隐藏切换功能
2017/02/08 Javascript
sublime text配置node.js调试(图文教程)
2017/11/23 Javascript
基于JQuery实现页面定时弹出广告
2020/05/08 jQuery
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
分享Python文本生成二维码实例
2016/01/06 Python
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
2016/08/30 Python
利用python微信库itchat实现微信自动回复功能
2017/05/18 Python
python shell根据ip获取主机名代码示例
2017/11/25 Python
详解python string类型 bytes类型 bytearray类型
2017/12/16 Python
matplotlib绘制动画代码示例
2018/01/02 Python
python中web框架的自定义创建
2019/09/08 Python
Python如何计算语句执行时间
2019/11/22 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
2020/03/05 Python
python 简单的调用有道翻译
2020/11/25 Python
匡威德国官网:Converse德国
2019/01/26 全球购物
音乐教学案例
2014/01/30 职场文书
医药营销个人求职信
2014/04/12 职场文书
工程承包协议书
2014/04/22 职场文书
厨房管理计划书
2014/04/27 职场文书
4s店销售经理岗位职责
2014/07/19 职场文书
实习护士自荐信
2015/03/25 职场文书
python数据可视化使用pyfinance分析证券收益示例详解
2021/11/20 Python
代码复现python目标检测yolo3详解预测
2022/05/06 Python