mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-02 12:05:57 +01:00
get extention from content type
This commit is contained in:
@@ -197,11 +197,8 @@ function uploadFile(uid, uploadedFile, callback) {
|
|||||||
|
|
||||||
if (meta.config.hasOwnProperty('allowedFileExtensions')) {
|
if (meta.config.hasOwnProperty('allowedFileExtensions')) {
|
||||||
var allowed = file.allowedExtensions();
|
var allowed = file.allowedExtensions();
|
||||||
var extension = path.extname(uploadedFile.name);
|
var extension = typeToExtension(uploadedFile.type);
|
||||||
if (!extension) {
|
if (!extension || (allowed.length > 0 && allowed.indexOf(extension) === -1)) {
|
||||||
extension = '.' + mime.extension(uploadedFile.type);
|
|
||||||
}
|
|
||||||
if (allowed.length > 0 && allowed.indexOf(extension) === -1) {
|
|
||||||
return callback(new Error('[[error:invalid-file-type, ' + allowed.join(', ') + ']]'));
|
return callback(new Error('[[error:invalid-file-type, ' + allowed.join(', ') + ']]'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -210,14 +207,13 @@ function uploadFile(uid, uploadedFile, callback) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function saveFileToLocal(uploadedFile, callback) {
|
function saveFileToLocal(uploadedFile, callback) {
|
||||||
var extension = path.extname(uploadedFile.name);
|
var extension = typeToExtension(uploadedFile.type);
|
||||||
if (!extension && uploadedFile.type) {
|
if (!extension) {
|
||||||
extension = '.' + mime.extension(uploadedFile.type);
|
return callback(new Error('[[error:invalid-extension]]'));
|
||||||
}
|
}
|
||||||
|
|
||||||
var filename = uploadedFile.name || 'upload';
|
var filename = uploadedFile.name || 'upload';
|
||||||
|
|
||||||
filename = Date.now() + '-' + validator.escape(filename.replace(extension, '')).substr(0, 255) + extension;
|
filename = Date.now() + '-' + validator.escape(filename.replace(path.extname(uploadedFile.name) || '', '')).substr(0, 255) + extension;
|
||||||
|
|
||||||
file.saveFileToLocal(filename, 'files', uploadedFile.path, function (err, upload) {
|
file.saveFileToLocal(filename, 'files', uploadedFile.path, function (err, upload) {
|
||||||
if (err) {
|
if (err) {
|
||||||
@@ -232,6 +228,14 @@ function saveFileToLocal(uploadedFile, callback) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function typeToExtension(type) {
|
||||||
|
var extension;
|
||||||
|
if (type) {
|
||||||
|
extension = '.' + mime.extension(type);
|
||||||
|
}
|
||||||
|
return extension;
|
||||||
|
}
|
||||||
|
|
||||||
function deleteTempFiles(files) {
|
function deleteTempFiles(files) {
|
||||||
async.each(files, function (file, next) {
|
async.each(files, function (file, next) {
|
||||||
fs.unlink(file.path, function (err) {
|
fs.unlink(file.path, function (err) {
|
||||||
|
|||||||
Reference in New Issue
Block a user