[nodeJS] fs.unlink 파일 삭제 시도 중 operation not permitted, unlink 에러발생
[nodeJS] fs.unlink 파일 삭제 시도 중 operation not permitted, unlink 에러발생
fs모듈
fs는 FileSystem의 약자로, fs모듈은 NodeJS에서 파일 입출력 처리를 할 때 사용한다.
fs.unlink와 fs.unlinksync로 파일을 삭제할 수 있는데,
unlink는 비동기 unlinksync는 동기적으로 파일을 삭제한다.
내가 하고자 했던 작업은..
이렇게 앱서버가 있고,
서버 루트폴더에 public/images 에 resized된 이미지가 있고
로컬 파일시스템에 user/images 에 원본 이미지가 있음.
그리고 삭제 api를 호출하면
양쪽 경로에 있는 이미지를 삭제하는 거였는데...
fs.unlink(filePath)로 삭제를 하면 계속
operation not permitted, unlink 이렇게 에러가 발생함..
근데 앱서버의 public/images 하위의 파일은 잘 삭제가 되는데
로컬 파일시스템의 파일이 잘 삭제가 안되었음.
로컬파일시스템에 접근권한이 없어서 그런가 하는 의심을 하긴했는데,
계속 fs모듈로 시도를 했던이유가..
삭제가 아예 안되는건 아니고
에러가 뜰때도 있고 아닐 때도 있어서 ^^...............(한가지만 해라 즌쯔,,,,,,,,,,,)
그래서 미련을 못버리고 계속 시도했는데
갑자기 또 로컬 파일을 잘지우는 것................(이유는 모름)
근데 이대로 계속 개발을 진행하는건 완전 찝찝
fs.unlink (또는 unlinkSync)로는 로컬 파일시스템의 파일을 안전하게 지울수 없다는 생각이 들어
child_process의 exec를 사용하기로 했다.
if(fs.existsSync(originalPath)){
cp.exec(`del /f /q "${originalPath}"`, (error, stdout, stderr) => {
if(error){
console.log(`파일 삭제중 에러발생 : ${error.message}`);
return;
}
if(stderr){
console.log(`stderr: ${stderr}`);
}
console.log(`${originalPath} 파일 삭제됨 ! `);
})
}
삭제 잘 됨 ^^