This commit is contained in:
David Arranz 2019-08-15 23:44:09 +02:00
parent 1771981b2f
commit afd69b9da4
4 changed files with 55 additions and 13 deletions

View File

@ -2,6 +2,7 @@ const Path = require("path");
const config = require('../config');
const sanitize = require("sanitize-filename");
const safename = require("safename");
const unf = require('unique-file-name');
const assetsUrl = config.cdn.hostname;
@ -16,6 +17,14 @@ const CDN_PATHS = {
const sanitizeFilename = (filename) => safename(sanitize(filename, { replacement: "_" }));
const getUniqueName = function (path, filename) {
const namer = unf({
format: '%32b_%6r%8e',
dir: path
});
return namer(filename)
}
const getCDNMediaUrl = (mediaUri) => {
if (mediaUri) {
const pathParsed = mediaUri.indexOf("media") == 0 ? mediaUri.substr("media/".length, mediaUri.length) : mediaUri;
@ -28,7 +37,7 @@ const getCDNMediaUrl = (mediaUri) => {
const getCDNCityMediaUrl = (cityName) => encodeURI(`${assetsUrl}/${CDN_PATHS.CITIES}/${cityName}.jpg`);
const getCDNFilenameWithPath = (filename, type) => {
const getCDNPath = (type = '') => {
var cdnPath = '';
switch (type) {
case 'speaker':
@ -43,14 +52,41 @@ const getCDNFilenameWithPath = (filename, type) => {
break;
default:
throw new Error('Multimedia type unknown');
var _date = new Date();
cdnPath = _date.getFullYear() + '/' + _date.getMonth() + '/';
break;
}
return Path.join(config.uploads.path, cdnPath);
}
const getCDNFilenameWithPath = (filename, type) => {
var cdnPath = '';
switch (type) {
case 'speaker':
cdnPath = CDN_PATHS.SPEAKERS;
break;
case 'event':
cdnPath = CDN_PATHS.EVENT;
break;
case 'post':
cdnPath = CDN_PATHS.BLOG;
break;
default:
var _date = new Date();
cdnPath = _date.getFullYear() + '/' + _date.getMonth() + '/';
break;
}
return Path.join(cdnPath, sanitizeFilename(filename));
}
module.exports = {
sanitizeFilename,
CDN_PATHS,
getCDNCityMediaUrl,
getCDNMediaUrl,
getCDNFilenameWithPath
getCDNPath,
getCDNFilenameWithPath,
getUniqueName
}

View File

@ -1,6 +1,7 @@
var multer = require('multer');
var mkdirp = require('mkdirp');
var config = require('../config');
var cdnHelper = require('../helpers/cdn.helper');
/*var upload = function (path) {
return multer({storage: storage(path)});
@ -19,24 +20,22 @@ var makePath = function(path) {
var cdnStorage = function(path) {
return multer.diskStorage({
destination: function (req, file, cb) {
console.log(req);
console.log(file);
cb(null, path)
},
filename: function (req, file, cb) {
cb(null, file.originalname)
cdnHelper.getUniqueName(path, file.originalname)
.then(function(betterName) {
cb(null, betterName)
});
}
});
}
var cdnUpload = function() {
var _date = new Date();
var pathWithDate = config.uploads.path + '/' + _date.getFullYear() + '/' + _date.getMonth() + '/';
makePath(pathWithDate);
var cdnPath = cdnHelper.getCDNPath();
makePath(cdnPath);
return multer({
storage: cdnStorage(pathWithDate)
storage: cdnStorage(cdnPath)
});
}

View File

@ -1,5 +1,6 @@
'use strict';
const httpStatus = require('http-status');
var configuration = require('../../config');
const generateControllers = require('../../core/controllers');
const multimediaFileService = require('./multimedia_file.service');
const { extractParamsFromRequest, handleErrorResponse, handleResultResponse } = require('../../helpers/controller.helper');
@ -43,10 +44,14 @@ const extraControllers = {
create: (config) => {
return async (req, res, next) => {
var data = req.body;
try {
if (req.file) {
data.url = req.file.path.replace(configuration.uploads.path, '');
}
var data = req.body;
console.log(data);
console.log(req.file);
const context = buildContext(req, config);
const result = await multimediaFileService.create(data, context);

View File

@ -26,6 +26,7 @@
"bcrypt": "^3.0.6",
"body-parser": "^1.18.3",
"buffer": "^5.2.1",
"chai": "^4.2.0",
"cheerio": "^1.0.0-rc.3",
"compression": "^1.7.4",
"cors": "^2.8.5",
@ -63,6 +64,7 @@
"sanitize-filename": "^1.6.2",
"sequelize": "^5.6.1",
"sharp": "^0.23.0",
"unique-file-name": "^1.0.0",
"vimeo": "^2.1.1",
"vm": "^0.1.0",
"winston": "^3.2.1"