get extention from content type

v1.18.x
barisusakli 8 years ago
parent 409b8d8ebc
commit 51981ffb99

@ -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) {

Loading…
Cancel
Save