mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-29 01:56:12 +01:00
closes #4392
This commit is contained in:
@@ -45,11 +45,26 @@ uploadsController.upload = function(req, res, filesIterator, next) {
|
||||
|
||||
uploadsController.uploadPost = function(req, res, next) {
|
||||
uploadsController.upload(req, res, function(uploadedFile, next) {
|
||||
if (uploadedFile.type.match(/image./)) {
|
||||
uploadImage(req.uid, uploadedFile, next);
|
||||
} else {
|
||||
uploadFile(req.uid, uploadedFile, next);
|
||||
var isImage = uploadedFile.type.match(/image./);
|
||||
if (isImage && plugins.hasListeners('filter:uploadImage')) {
|
||||
return plugins.fireHook('filter:uploadImage', {image: uploadedFile, uid: req.uid}, next);
|
||||
}
|
||||
|
||||
async.waterfall([
|
||||
function(next) {
|
||||
if (isImage) {
|
||||
file.isFileTypeAllowed(uploadedFile.path, next);
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
},
|
||||
function (next) {
|
||||
if (parseInt(meta.config.allowFileUploads, 10) !== 1) {
|
||||
return next(new Error('[[error:uploads-are-disabled]]'));
|
||||
}
|
||||
uploadFile(req.uid, uploadedFile, next);
|
||||
}
|
||||
], next);
|
||||
}, next);
|
||||
};
|
||||
|
||||
@@ -65,22 +80,27 @@ uploadsController.uploadThumb = function(req, res, next) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
if (uploadedFile.type.match(/image./)) {
|
||||
var size = parseInt(meta.config.topicThumbSize, 10) || 120;
|
||||
image.resizeImage({
|
||||
path: uploadedFile.path,
|
||||
extension: path.extname(uploadedFile.name),
|
||||
width: size,
|
||||
height: size
|
||||
}, function(err) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
uploadImage(req.uid, uploadedFile, next);
|
||||
});
|
||||
} else {
|
||||
next(new Error('[[error:invalid-file]]'));
|
||||
if (!uploadedFile.type.match(/image./)) {
|
||||
return next(new Error('[[error:invalid-file]]'));
|
||||
}
|
||||
|
||||
var size = parseInt(meta.config.topicThumbSize, 10) || 120;
|
||||
image.resizeImage({
|
||||
path: uploadedFile.path,
|
||||
extension: path.extname(uploadedFile.name),
|
||||
width: size,
|
||||
height: size
|
||||
}, function(err) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
if (plugins.hasListeners('filter:uploadImage')) {
|
||||
return plugins.fireHook('filter:uploadImage', {image: uploadedFile, uid: req.uid}, next);
|
||||
}
|
||||
|
||||
uploadFile(req.uid, uploadedFile, next);
|
||||
});
|
||||
});
|
||||
}, next);
|
||||
};
|
||||
@@ -102,32 +122,11 @@ uploadsController.uploadGroupCover = function(uid, uploadedFile, callback) {
|
||||
});
|
||||
};
|
||||
|
||||
function uploadImage(uid, image, callback) {
|
||||
if (plugins.hasListeners('filter:uploadImage')) {
|
||||
return plugins.fireHook('filter:uploadImage', {image: image, uid: uid}, callback);
|
||||
}
|
||||
|
||||
file.isFileTypeAllowed(image.path, function(err) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
if (parseInt(meta.config.allowFileUploads, 10)) {
|
||||
uploadFile(uid, image, callback);
|
||||
} else {
|
||||
callback(new Error('[[error:uploads-are-disabled]]'));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function uploadFile(uid, uploadedFile, callback) {
|
||||
if (plugins.hasListeners('filter:uploadFile')) {
|
||||
return plugins.fireHook('filter:uploadFile', {file: uploadedFile, uid: uid}, callback);
|
||||
}
|
||||
|
||||
if (parseInt(meta.config.allowFileUploads, 10) !== 1) {
|
||||
return callback(new Error('[[error:uploads-are-disabled]]'));
|
||||
}
|
||||
|
||||
if (!uploadedFile) {
|
||||
return callback(new Error('[[error:invalid-file]]'));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user