nodejs -- Formidable 사용하여 multiple file upload 하기
환경 : 맥 El Capitan, Nodejs 4.2.1, formidable 1.0.17, fs-extra 0.26.7
참고 : https://github.com/felixge/node-formidable ==> Formidable
https://www.devbattles.com/en/sand/post-34-Upload+file+in+Node.js+using+formidable
http://www.codediesel.com/nodejs/processing-file-uploads-in-node-js/
http://stackoverflow.com/questions/34672568/http-file-upload-in-express-nodejs-server
https://github.com/jprichardson/node-fs-extra#movesrc-dest-options-callback ==> fs-extra
<< multiple file 업로드를 위한 HTML 설정 >>
<input type="file" name="upload" multiple="multiple">
<< Formidable >>
** Formidable.IncomingForm
var form = new formidable.IncomingForm();
--> 새로운 incoming form 생성.
form.encoding = 'utf-8';
--> Sets encoding for incoming form fields. default = 'utf-8'
form.uploadDir = "/my/dir";
Sets the directory for placing file uploads in.
The default is os.tmpDir().
form.keepExtensions = true;
form.uploadDir 에 파일 쓸때, 원래 확장자 사용할려면, true 로 해야함.
form.maxFieldsSize = 2 * 1024 * 1024;
--> 메로리 할당 한계 ; default size is 2MB.
form.hash = false;
--> checksums ; set this to either 'sha1' or 'md5'.
form.multiples = false;
--> submit multiple files using the HTML5 multiple attribute
; false 로 설정해도, multiple file 업로드에는 지장없으나, true 로 설정해야 form.parse() 에서 util.inspect() 로 볼때 files 객체에 다중 파일보인다..
form.parse(request, [callback]);
--> Parses an incoming node.js request containing form data.
** Formidable.File
file.size --> 디스크에 쓰여진 파일 사이즈.
file.path --> The path this file is being written to.
file.name
file.type --> The mime type of this file
** Events
'progress'
--> Emitted after each incoming chunk of data that has been parsed. Can be used to roll your own progress bar.
form.on('progress', function(bytesReceived, bytesExpected) {
});
'fileBegin'
'error'
'end'
--> 모든 request를 받고, 디스크에 모든 파일를 쓴후 발생하는 event!
--> response 보내는 위치.
form.on('end', function() {
});
<< 소스 >>
** <meta charset="utf-8"> 을 생략시에는 한글 파일 업로드시 한글이름깨짐.
<< progress 이벤트 추가 소스 >>
-- progress 이벤트, error 이벤트 추가함.
form.on('progress', function(bytesReceived, bytesExpected) {
});
form.on('error', function(err) {
});
'nodejs' 카테고리의 다른 글
nodejs -- Express 기초 (0) | 2016.05.13 |
---|---|
nodejs -- npm 최신 버전으로 변경하기, 옵션 (0) | 2016.05.12 |
nodejs -- nodejs 4.3.0 LTS 로 update 하기 (0) | 2016.02.15 |
nodejs -- socket.io 1.3.7 + jquery 예제 만들기 (수정 예정) (0) | 2015.12.17 |
nodejs -- socket.io, express-generator 시작 설정하기 (0) | 2015.11.30 |