jschan - Anonymous imageboard software. Classic look, modern features and feel. Works without JavaScript and supports Tor, I2P, Lokinet, etc.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

50 lines
1.1 KiB

'use strict';
const multer = require('multer')
, fileFilter = require(__dirname+'/filefilter.js')
, path = require('path')
, uploadDest = path.join(__dirname, '/../static/img/')
, uuidv4 = require('uuid/v4')
, storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, uploadDest)
},
filename: function (req, file, cb) {
cb(null, uuidv4() + path.extname(file.originalname))
}
})
, upload = multer({
storage: storage,
limits: { fileSize: 1 * 1024 * 1024 }, //1MB for now
fileFilter: fileFilter
}).single('file')
, gm = require('@tohru/gm');
module.exports = {
upload,
uploadDest,
uploadAndThumb: (req, res) => {
return new Promise((resolve, reject) => {
upload(req, res, function (err) {
if (err) {
return reject(err)
}
if (req.file) {
//thumbnail it
gm(uploadDest+req.file.filename)
.resize(128, 128)
.noProfile()
.write(uploadDest+'thumb-'+req.file.filename, function (err) {
if (err) {
return reject(err);
}
return resolve()
});
}
});
});
},
};