파일첨부 모듈
CMD> npm i multer --save
파일명 models.book1.js (백)
// npm i mongoode --save
var mongoose = require('mongoose');
// npm i --save mongoose-sequence
const AutoIncrement = require('mongoose-sequence')(mongoose);
var Schema = mongoose.Schema;
// 번호, 책제목, 파일, 파일크기, 파일타입, 파일명, 등록일
var bookSchema = new Schema({
_id : Number,
title : { type : String, default : '' },
filedata : { type : Buffer, default : null} ,
filesize : { type : Number, default : 0 },
filetype : { type : String, default : '' },
filename : { type : String, default : '' },
regdate : { type : Date , default : Date.now }
});
// 시퀀스 사용 설정
bookSchema.plugin(AutoIncrement, {id:'SEQ_BOOK10_ID', inc_field:'_id'} )
module.exports = mongoose.model('book10', bookSchema);
파일명 routes/upload.js
var express = require('express');
var router = express.Router();
// 이미지 첨부 모듈
var multer = require('multer')
var upload = multer({storage : multer.memoryStorage()});
var Book1 = require('../models/book1');
// 이미지 등록
// 127.0.0.1:3000/upload/insert
router.post('/insert', upload.single("img"), async function(req, res, next) {
try {
console.log(req.body);
console.log(req.file);
var book1 = new Book1();
book1.title = req.body.title;
if(typeof req.file !== 'undefined'){
book1.filedata = req.file.buffer;
book1.filesize = req.file.size;
book1.filetype = req.file.mimetype;
book1.filename = req.file.originalname;
}
await book1.save();
return res.send({status:200});
}
catch (e) {
console.error(e);
return res.send({status : -1});
}
});
// 이미지 url만들기
// 127.0.0.1:3000/upload/image?no=1
// <img src="/upload/image?no=1" />
router.get('/image', async function(req, res, next) {
try {
const query = {_id : Number(req.query.no)};
const book1 = await Book1.findOne(query).select({title:0});
// console.log(book1);
res.contentType(book1.filetype);
res.send(book1.filedata);
} catch (e) {
console.error(e);
return res.send({status : -1});
}
});
module.exports = router;