fix #30, thumbnail

This commit is contained in:
lesion
2019-03-20 00:50:43 +01:00
parent c7a0b22076
commit 299d9656d7
6 changed files with 24 additions and 7 deletions

View File

@@ -8,6 +8,8 @@ const eventController = require('./event')
const config = require('../config')
const mail = require('../mail')
const { Op } = require('sequelize')
const fs = require('fs')
const path = require('path')
const userController = {
async login (req, res) {
@@ -46,6 +48,12 @@ const userController = {
const event = await Event.findByPk(req.params.id)
// check if event is mine (or user is admin)
if (event && (req.user.is_admin || req.user.id === event.userId)) {
if (event.image_path) {
const old_path = path.resolve(__dirname, '..', '..', 'uploads', event.image_path)
const old_thumb_path = path.resolve(__dirname, '..', '..', 'uploads', 'thumb', event.image_path)
await fs.unlink(old_path)
await fs.unlink(old_thumb_path)
}
await event.destroy()
res.sendStatus(200)
} else {
@@ -72,7 +80,7 @@ const userController = {
}
if (req.file) {
eventDetails.image_path = req.file.path
eventDetails.image_path = req.file.filename
}
let event = await Event.create(eventDetails)
@@ -114,10 +122,12 @@ const userController = {
if (req.file) {
if (event.image_path) {
const old_path = path.resolve(__dirname, '..', '..', event.image_path)
const old_path = path.resolve(__dirname, '..', '..', 'uploads', event.image_path)
const old_thumb_path = path.resolve(__dirname, '..', '..', 'uploads', 'thumb', event.image_path)
await fs.unlink(old_path, e => console.error(e))
await fs.unlink(old_thumb_path, e => console.error(e))
}
body.image_path = req.file.path
body.image_path = req.file.filename
}
body.description = body.description

View File

@@ -25,8 +25,14 @@ DiskStorage.prototype._handleFile = function _handleFile (req, file, cb) {
const filename = crypto.randomBytes(16).toString('hex') + '.jpg'
const finalPath = path.join(destination, filename)
const thumbPath = path.join(destination, 'thumb', filename)
const outStream = fs.createWriteStream(finalPath)
const thumbStream = fs.createWriteStream(thumbPath)
const resizer = sharp().resize(800).jpeg({ quality: 80 })
const thumbnailer = sharp().resize(400).jpeg({ quality: 60 })
file.stream.pipe(thumbnailer).pipe(thumbStream)
thumbStream.on('error', e => console.log('thumbStream error ', e))
file.stream.pipe(resizer).pipe(outStream)
outStream.on('error', cb)