nodejs用 fs.rename报错 cross-device link not permitted
fs.rename(files.imgs.path, './public/images/avatar/'+ files.imgs.name,(err)=>{
if(err) throw err;
})
具体错误详细信息:Error: EXDEV: cross-device link not permitted, rename ‘/tmp/upload_6db19e14ceadfbf967b37b77b2133828’ -> ‘./public/images/avatar/7.jpg’
- 试过用 改写临时路径不行
form.uploadDir = "./tmp";
2.试过util ,找不到util.
var util = require('util');
util.pump(readStream,writeStream, function() {
fs.unlinkSync('files.upload.path');
});
- 也试过以下方式写入文件,但有 readStream.on(‘end’,function(){});
与res.send冲突
var readStream=fs.createReadStream(files.imgs.path);
var writeStream=fs.createWriteStream('./public/images/avatar/'+files.imgs.name);
readStream.pipe(writeStream);
readStream.on('end',function(){
fs.unlinkSync(files.imgs.path);
});
4.最后成功了。文件读出写入方式存储,但是编码方式注意以base64.
let dataBase = fs.readFileSync(files.imgs.path,'base64');
fs.writeFileSync('./public/images/avatar/'+ files.imgs.name,dataBase,'base64');