2018-03-17 21:14:50 -04:00
'use strict'
const Router = require ( 'express' ) . Router
const formidable = require ( 'formidable' )
const config = require ( '../../config' )
const logger = require ( '../../logger' )
2019-10-27 08:51:53 -04:00
const errors = require ( '../../errors' )
2018-03-17 21:14:50 -04:00
const imageRouter = module . exports = Router ( )
// upload image
imageRouter . post ( '/uploadimage' , function ( req , res ) {
var form = new formidable . IncomingForm ( )
form . keepExtensions = true
2018-03-07 09:17:35 -05:00
if ( config . imageUploadType === 'filesystem' ) {
2018-06-23 15:47:22 -04:00
form . uploadDir = config . uploadsPath
2018-03-17 21:14:50 -04:00
}
form . parse ( req , function ( err , fields , files ) {
2020-11-23 06:42:19 -05:00
if ( err ) {
2019-06-08 14:51:24 -04:00
logger . error ( ` formidable error: ${ err } ` )
2020-11-23 06:42:19 -05:00
return errors . errorForbidden ( res )
} else if ( ! files . image || ! files . image . path ) {
logger . error ( ` formidable error: Upload didn't contain file) ` )
return errors . errorBadRequest ( res )
} else if ( ! config . allowedUploadMimeTypes . includes ( files . image . type ) ) {
logger . error ( ` formidable error: MIME-type " ${ files . image . type } " of uploaded file not allowed, only " ${ config . allowedUploadMimeTypes . join ( ', ' ) } " are allowed) ` )
return errors . errorBadRequest ( res )
2018-03-17 21:14:50 -04:00
} else {
2019-06-08 14:51:24 -04:00
logger . debug ( ` SERVER received uploadimage: ${ JSON . stringify ( files . image ) } ` )
2018-03-17 21:14:50 -04:00
2018-03-07 09:17:35 -05:00
const uploadProvider = require ( './' + config . imageUploadType )
2019-06-08 14:51:24 -04:00
logger . debug ( ` imageRouter: Uploading ${ files . image . path } using ${ config . imageUploadType } ` )
2018-03-17 21:14:50 -04:00
uploadProvider . uploadImage ( files . image . path , function ( err , url ) {
if ( err !== null ) {
logger . error ( err )
return res . status ( 500 ) . end ( 'upload image error' )
}
2019-06-08 14:51:24 -04:00
logger . debug ( ` SERVER sending ${ url } to client ` )
2018-03-17 21:14:50 -04:00
res . send ( {
link : url
} )
} )
}
} )
} )