Remove preprocess image on upload image or it will losing support of image some formats

This commit is contained in:
Wu Cheng-Han 2016-12-03 14:37:12 +08:00
parent 840cac7435
commit 5958654ea4
2 changed files with 53 additions and 75 deletions

127
app.js
View file

@ -462,91 +462,70 @@ app.post('/uploadimage', function (req, res) {
form.uploadDir = "public/uploads";
}
function preprocessImage(path) {
return new Promise((resolve) => {
var oldFile = `${path}-old`;
fs.rename(path, oldFile, function() {
var sharp = require('sharp');
sharp(oldFile).toFile(path).then(() => {
fs.unlink(oldFile, function() {
resolve(path);
})
});
});
});
}
form.parse(req, function (err, fields, files) {
if (err || !files.image || !files.image.path) {
response.errorForbidden(res);
} else {
preprocessImage(files.image.path).then(() => {
if (config.debug)
logger.info('SERVER received uploadimage: ' + JSON.stringify(files.image));
if (config.debug)
logger.info('SERVER received uploadimage: ' + JSON.stringify(files.image));
try {
switch (config.imageUploadType) {
case 'filesystem':
res.send({
link: path.join(config.serverurl, files.image.path.match(/^public(.+$)/)[1])
});
var path = require('path');
try {
switch (config.imageUploadType) {
case 'filesystem':
res.send({
link: path.join(config.serverurl, files.image.path.match(/^public(.+$)/)[1])
});
break;
break;
case 's3':
var AWS = require('aws-sdk');
var awsConfig = new AWS.Config(config.s3);
var s3 = new AWS.S3(awsConfig);
case 's3':
var AWS = require('aws-sdk');
var awsConfig = new AWS.Config(config.s3);
var s3 = new AWS.S3(awsConfig);
fs.readFile(files.image.path, function (err, buffer) {
var params = {
Bucket: 'hackmd',
Key: path.join('uploads', path.basename(files.image.path)),
Body: buffer
};
fs.readFile(files.image.path, function (err, buffer) {
var params = {
Bucket: 'hackmd',
Key: path.join('uploads', path.basename(files.image.path)),
Body: buffer
};
s3.putObject(params, function (err, data) {
if (err) {
logger.error(err);
res.status(500).end('upload image error');
} else {
res.send({
link: `https://s3-${config.s3.region}.amazonaws.com/${config.s3bucket}/${params.Key}`
});
}
});
});
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) {
s3.putObject(params, function (err, data) {
if (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');
}
res.status(500).end('upload image error');
} else {
res.send({
link: `https://s3-${config.s3.region}.amazonaws.com/${config.s3bucket}/${params.Key}`
});
}
});
}).catch((err) => {
});
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('process image error');
});
return res.status(500).end('upload image error');
}
}
});
});

View file

@ -101,7 +101,6 @@
"scrypt": "^6.0.3",
"select2": "^3.5.2-browserify",
"sequelize-cli": "^2.4.0",
"sharp": "^0.16.2",
"shortid": "2.2.6",
"socket.io": "~1.6.0",
"socket.io-client": "~1.6.0",