support filesystem image upload

This commit is contained in:
Yukai Huang 2016-11-14 17:07:07 +08:00
parent 81b368c11c
commit a5dad29300
2 changed files with 31 additions and 13 deletions

38
app.js
View File

@ -405,6 +405,7 @@ app.get('/me', function (req, res) {
//upload to imgur
app.post('/uploadimage', function (req, res) {
var form = new formidable.IncomingForm();
form.uploadDir = "public/uploads";
form.keepExtensions = true;
@ -414,20 +415,33 @@ app.post('/uploadimage', function (req, res) {
} else {
if (config.debug)
logger.info('SERVER received uploadimage: ' + JSON.stringify(files.image));
imgur.setClientId(config.imgur.clientID);
try {
imgur.uploadFile(files.image.path)
.then(function (json) {
if (config.debug)
logger.info('SERVER uploadimage success: ' + JSON.stringify(json));
res.send({
link: json.data.link.replace(/^http:\/\//i, 'https://')
});
})
.catch(function (err) {
logger.error(err);
return res.status(500).end('upload image error');
switch (config.imageUploadType) {
case 'filesystem':
res.send({
link: files.image.path.match(/^public(.+$)/)[1]
});
break;
case 'imgur':
default:
imgur.setClientId(config.imgur.clientID);
imgur.uploadFile(files.image.path)
.then(function (json) {
if (config.debug)
logger.info('SERVER uploadimage success: ' + JSON.stringify(json));
res.send({
link: json.data.link.replace(/^http:\/\//i, 'https://')
});
})
.catch(function (err) {
logger.error(err);
return res.status(500).end('upload image error');
});
break;
}
} catch (err) {
logger.error(err);
return res.status(500).end('upload image error');

View File

@ -56,6 +56,9 @@ var heartbeattimeout = config.heartbeattimeout || 10000;
// document
var documentmaxlength = config.documentmaxlength || 100000;
// image upload setting, available options are imgur/s3/filesystem
var imageUploadType = config.imageUploadType || 'imgur';
// auth
var facebook = (process.env.HMD_FACEBOOK_CLIENTID && process.env.HMD_FACEBOOK_CLIENTSECRET) ? {
clientID: process.env.HMD_FACEBOOK_CLIENTID,
@ -139,5 +142,6 @@ module.exports = {
gitlab: gitlab,
dropbox: dropbox,
google: google,
imgur: imgur
imgur: imgur,
imageUploadType: imageUploadType
};