当前位置: 首页 > 后端技术 > Node.js

nodejs提示cross-devicelinknotpermitted,rename错误解决方法

时间:2023-04-03 21:06:13 Node.js

node.js提示error:Error:EXDEV:cross-devicelinknotpermitted,rename'C:\Users\THEDIS~1\AppData\Local\Temp\upload_9b46f1afc2f9ade074037c3fb707d271'->'E:/node-rumen/tmp/test.png'文件上传功能,调用fs.renameSync方法错误这个提示是跨区域重命名文件时出现的权限问题。先将源文件复制到另一个分区的目标文件中,然后取消链接。form.parse(request,function(error,fields,files){console.log(“解析完成”);fs.renameSync(files.upload.path,“/tmp/test.png”);});更改为form.parse(request,function(error,fields,files){console.log(“parsingdone”);//fs.renameSync(files.upload.path,“/nodejs/case/two/img/test.png”);varreadStream=fs.createReadStream(files.upload.path);varwriteStream=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'(写个临时路径)函数upload(response,request){console.log("上传名为");varform=newformidable.IncomingForm();形式。uploadDir='tmp';console.log(“即将解析”);form.parse(request,function(error,fields,files){console.log(“解析完成”);fs.renameSync(files.upload.path,“./tmp/test.jpg”);response.writeHead(200,{“Content-Type”:“text/html”});response.write(“receivedimage:
”);response.write(“”);响应.end();});}