통합구현 2022/03/18(이미지(book1))

무간·2022년 3월 18일
0

파일첨부 모듈

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;
profile
당신을 한 줄로 소개해보세요

0개의 댓글