NodeJs 파일 업로드 및 삭제하기

Formidable 설치하기

npm i -S formidable

html 에서 파일 입력받기

1
<input type="file" (change)="fileChange($event)" placeholder="Upload file" accept=".pdf,.doc,.docx">

입력받은 파일을 formData에 담아 서버로 전송하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
fileChange(event) {
let fileList: FileList = event.target.files;
if(fileList.length > 0) {
let file: File = fileList[0];
let formData:FormData = new FormData();
formData.append('uploadFile', file, file.name);
let headers = new Headers();
/** No need to include Content-Type in Angular 4 */
headers.append('Content-Type', 'multipart/form-data');
headers.append('Accept', 'application/json');
let options = new RequestOptions({ headers: headers });
this.http.post(`${this.apiEndPoint}`, formData, options)
.map(res => res.json())
.catch(error => Observable.throw(error))
.subscribe(
data => console.log('success'),
error => console.log(error)
)
}
}

node server에서 수신하기

1
2
3
4
5
6
7
8
9
10
11
12
13
router.post('/cover_img',function(req,res){
console.log("커버이미지 저장 시작!");
var form = new formidable.IncomingForm();
form.parse(req, function (err, fields, files) {
console.log(files);
var oldpath = files.uploadFile.path;
var newpath = "/var/www/html/contents_cover_img/" + files.uploadFile.name;
fs.rename(oldpath, newpath, function (err) {
if (err) throw err;
res.sendStatus(200);
});
})
})

참고자료

Angular 다양한 종류의 Template and Data Binding NodeJs urlencode를 활용한 한글 인코딩

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×