.
This commit is contained in:
parent
1771981b2f
commit
afd69b9da4
@ -2,6 +2,7 @@ const Path = require("path");
|
|||||||
const config = require('../config');
|
const config = require('../config');
|
||||||
const sanitize = require("sanitize-filename");
|
const sanitize = require("sanitize-filename");
|
||||||
const safename = require("safename");
|
const safename = require("safename");
|
||||||
|
const unf = require('unique-file-name');
|
||||||
|
|
||||||
const assetsUrl = config.cdn.hostname;
|
const assetsUrl = config.cdn.hostname;
|
||||||
|
|
||||||
@ -16,6 +17,14 @@ const CDN_PATHS = {
|
|||||||
|
|
||||||
const sanitizeFilename = (filename) => safename(sanitize(filename, { replacement: "_" }));
|
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) => {
|
const getCDNMediaUrl = (mediaUri) => {
|
||||||
if (mediaUri) {
|
if (mediaUri) {
|
||||||
const pathParsed = mediaUri.indexOf("media") == 0 ? mediaUri.substr("media/".length, mediaUri.length) : 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 getCDNCityMediaUrl = (cityName) => encodeURI(`${assetsUrl}/${CDN_PATHS.CITIES}/${cityName}.jpg`);
|
||||||
|
|
||||||
const getCDNFilenameWithPath = (filename, type) => {
|
const getCDNPath = (type = '') => {
|
||||||
var cdnPath = '';
|
var cdnPath = '';
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'speaker':
|
case 'speaker':
|
||||||
@ -43,14 +52,41 @@ const getCDNFilenameWithPath = (filename, type) => {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
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));
|
return Path.join(cdnPath, sanitizeFilename(filename));
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
sanitizeFilename,
|
||||||
CDN_PATHS,
|
CDN_PATHS,
|
||||||
getCDNCityMediaUrl,
|
getCDNCityMediaUrl,
|
||||||
getCDNMediaUrl,
|
getCDNMediaUrl,
|
||||||
getCDNFilenameWithPath
|
getCDNPath,
|
||||||
|
getCDNFilenameWithPath,
|
||||||
|
getUniqueName
|
||||||
}
|
}
|
||||||
@ -1,6 +1,7 @@
|
|||||||
var multer = require('multer');
|
var multer = require('multer');
|
||||||
var mkdirp = require('mkdirp');
|
var mkdirp = require('mkdirp');
|
||||||
var config = require('../config');
|
var config = require('../config');
|
||||||
|
var cdnHelper = require('../helpers/cdn.helper');
|
||||||
|
|
||||||
/*var upload = function (path) {
|
/*var upload = function (path) {
|
||||||
return multer({storage: storage(path)});
|
return multer({storage: storage(path)});
|
||||||
@ -19,24 +20,22 @@ var makePath = function(path) {
|
|||||||
var cdnStorage = function(path) {
|
var cdnStorage = function(path) {
|
||||||
return multer.diskStorage({
|
return multer.diskStorage({
|
||||||
destination: function (req, file, cb) {
|
destination: function (req, file, cb) {
|
||||||
console.log(req);
|
|
||||||
console.log(file);
|
|
||||||
cb(null, path)
|
cb(null, path)
|
||||||
},
|
},
|
||||||
filename: function (req, file, cb) {
|
filename: function (req, file, cb) {
|
||||||
cb(null, file.originalname)
|
cdnHelper.getUniqueName(path, file.originalname)
|
||||||
|
.then(function(betterName) {
|
||||||
|
cb(null, betterName)
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var cdnUpload = function() {
|
var cdnUpload = function() {
|
||||||
var _date = new Date();
|
var cdnPath = cdnHelper.getCDNPath();
|
||||||
var pathWithDate = config.uploads.path + '/' + _date.getFullYear() + '/' + _date.getMonth() + '/';
|
makePath(cdnPath);
|
||||||
|
|
||||||
makePath(pathWithDate);
|
|
||||||
|
|
||||||
return multer({
|
return multer({
|
||||||
storage: cdnStorage(pathWithDate)
|
storage: cdnStorage(cdnPath)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
const httpStatus = require('http-status');
|
const httpStatus = require('http-status');
|
||||||
|
var configuration = require('../../config');
|
||||||
const generateControllers = require('../../core/controllers');
|
const generateControllers = require('../../core/controllers');
|
||||||
const multimediaFileService = require('./multimedia_file.service');
|
const multimediaFileService = require('./multimedia_file.service');
|
||||||
const { extractParamsFromRequest, handleErrorResponse, handleResultResponse } = require('../../helpers/controller.helper');
|
const { extractParamsFromRequest, handleErrorResponse, handleResultResponse } = require('../../helpers/controller.helper');
|
||||||
@ -43,10 +44,14 @@ const extraControllers = {
|
|||||||
|
|
||||||
create: (config) => {
|
create: (config) => {
|
||||||
return async (req, res, next) => {
|
return async (req, res, next) => {
|
||||||
|
var data = req.body;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
if (req.file) {
|
||||||
|
data.url = req.file.path.replace(configuration.uploads.path, '');
|
||||||
|
}
|
||||||
var data = req.body;
|
var data = req.body;
|
||||||
console.log(data);
|
console.log(data);
|
||||||
console.log(req.file);
|
|
||||||
|
|
||||||
const context = buildContext(req, config);
|
const context = buildContext(req, config);
|
||||||
const result = await multimediaFileService.create(data, context);
|
const result = await multimediaFileService.create(data, context);
|
||||||
|
|||||||
@ -26,6 +26,7 @@
|
|||||||
"bcrypt": "^3.0.6",
|
"bcrypt": "^3.0.6",
|
||||||
"body-parser": "^1.18.3",
|
"body-parser": "^1.18.3",
|
||||||
"buffer": "^5.2.1",
|
"buffer": "^5.2.1",
|
||||||
|
"chai": "^4.2.0",
|
||||||
"cheerio": "^1.0.0-rc.3",
|
"cheerio": "^1.0.0-rc.3",
|
||||||
"compression": "^1.7.4",
|
"compression": "^1.7.4",
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
@ -63,6 +64,7 @@
|
|||||||
"sanitize-filename": "^1.6.2",
|
"sanitize-filename": "^1.6.2",
|
||||||
"sequelize": "^5.6.1",
|
"sequelize": "^5.6.1",
|
||||||
"sharp": "^0.23.0",
|
"sharp": "^0.23.0",
|
||||||
|
"unique-file-name": "^1.0.0",
|
||||||
"vimeo": "^2.1.1",
|
"vimeo": "^2.1.1",
|
||||||
"vm": "^0.1.0",
|
"vm": "^0.1.0",
|
||||||
"winston": "^3.2.1"
|
"winston": "^3.2.1"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user