다음과 같은 오류가 나오는 이유는 fs.rename
시 전송할 파일의 위치와, 저장할 파일의 각 드라이브의 위치가 서로 다르기 때문에 발생하는 오류이다.
fs.rename은 cross-device link를 말 그대로 허용하지 않는다.
app.post("/input", (req, res)=>{
var form = new formidable.IncomingForm();
form.parse(req, function (err, fields, files) {
var oldpath = files.photo_file.filepath;
console.log(oldpath);
var newpath = __dirname + "/images/" + files.photo_file.originalFilename;
console.log(newpath);
const rs = fs.createReadStream(oldpath);
const ws = fs.createWriteStream(newpath);
rs.pipe(ws);
});
})
현재 js
파일의 위치가 D드라이브에 존재하므로 __dirname을 사용했다.
다음과 같이 Strem을 통해서 파일을 복사하면 된다.