[WEB] Node.js를 통해 파일 읽기
1차적인 html/css틀 만들기
See the Pen project 3 by sohnsookyoung (@sooking87) on CodePen.
Node.js로 사진 불러오기: readFile()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | var http = require('http') var fs = require('fs') fs.readFile('./images/sample2.jpg', function(err, data) { if (err) throw err // Fail if the file can't be read. http.createServer(function(req, res) { res.writeHead(200, {'Content-Type': 'text/html'}); res.write('<html><body><img width="300px" height="400px" src="data:image/jpeg;base64,') res.write(Buffer.from(data).toString('base64')); res.end('"/></body></html>'); //res.end(data) // Send the file data to the browser. }).listen(3000) console.log('Server running at http://localhost:3000/') }) | cs |
fs.readFile(경로, function(err, data))
- 경로에서 읽은 파일을 data로 이동시켜서 브라우저로 값을 보냄
res.writeHead(statusCode, statusMessage, headers)
- statusCode: 숫자 유형의 상태코드, 200-정상, 404-에러
- statusMessae: **Content-Type** 이 **text/html** 이라는 것을 알려줌
- header: 함수, 배열, 문자열 자리
res.write()
- 괄호 안의 컨텐츠를 보낸다.
res.end()
- 콘텐츠 출력을 완료한다.
폴더에서 파일 리스트 가져오기: readdir()
1 2 3 4 5 6 7 | const testFolder = './images'; const fs = require('fs'); fs.readdir(testFolder, function(error, filelist){ console.log(filelist); console.log(filelist.length); }) | cs |
fs.readdir(경로, function(err, filelist))
- filelist안에 폴더 경로에 있는 파일들을 모두 리스트 형식으로 출력한다. .length를 통해서 개수도 알 수 있다.
폴더에서 경로 가져오기: path.basename()
1 2 3 4 5 6 7 8 | var path = require('path'); var fileName = "./images/sample.jpg"; var dirName = path.dirname(fileName); var baseName = path.basename(fileName); var extName = path.extname(fileName); console.log(path); console.log("디렉토리: %s, 파일이름: %s, 확장자: %s", dirName, baseName, extName); | cs |
앞에서 readdir() 을 통해서 파일 리스트를 가져온 후 filelist[i]
를 통해서 하나씩 readFile() 을 이용하여 respnse.write 를 하면 되는 줄 알았으나, readdir 에는 파일의 경로가 필요하지만 readFile 을 통해서 정확한 경로가 들어가지 않는 것 같았다. 구체적으로 ./images/undefined라고 뜬다. 그래서 path.basename 을 통해서 파일의 경로를 찾아서 readFile() 에 넣을 예정이다.
수정할 사항
- 보다시피 화면 크기에 따른 배치를 진행하지 않았다.
- Node.js를 통해서
images
폴더에 사진을 추가만 하면 알아서 출력될 수 있도록 해야된다. 그러면 파일 경로에 해당하는 매개변수를 어떻게 처리해야될지도 알아봐야겠다. - 2번의 연장선에서 사진이 추가될 때마다 사진을 원하는 모양, 위치에 추가시킬 수 있도록 해야겠다.
댓글남기기