Moves some logic from FilesRouter to FilesController for content-type and filename
This commit is contained in:
@@ -28,7 +28,7 @@ export class GridStoreAdapter extends FilesAdapter {
|
|||||||
|
|
||||||
// For a given config object, filename, and data, store a file
|
// For a given config object, filename, and data, store a file
|
||||||
// Returns a promise
|
// Returns a promise
|
||||||
createFile(config, filename: string, data, contentType: string) {
|
createFile(config, filename: string, data, contentType) {
|
||||||
return this._connect().then(database => {
|
return this._connect().then(database => {
|
||||||
let gridStore = new GridStore(database, filename, 'w');
|
let gridStore = new GridStore(database, filename, 'w');
|
||||||
return gridStore.open();
|
return gridStore.open();
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ import { Parse } from 'parse/node';
|
|||||||
import { randomHexString } from '../cryptoUtils';
|
import { randomHexString } from '../cryptoUtils';
|
||||||
import AdaptableController from './AdaptableController';
|
import AdaptableController from './AdaptableController';
|
||||||
import { FilesAdapter } from '../Adapters/Files/FilesAdapter';
|
import { FilesAdapter } from '../Adapters/Files/FilesAdapter';
|
||||||
|
import path from 'path';
|
||||||
|
import mime from 'mime';
|
||||||
|
|
||||||
export class FilesController extends AdaptableController {
|
export class FilesController extends AdaptableController {
|
||||||
|
|
||||||
@@ -11,7 +13,19 @@ export class FilesController extends AdaptableController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
createFile(config, filename, data, contentType) {
|
createFile(config, filename, data, contentType) {
|
||||||
|
|
||||||
|
let extname = path.extname(filename);
|
||||||
|
|
||||||
|
const hasExtension = extname.length > 0;
|
||||||
|
|
||||||
|
if (!hasExtension && contentType && mime.extension(contentType)) {
|
||||||
|
filename = filename + '.' + mime.extension(contentType);
|
||||||
|
} else if (hasExtension && !contentType) {
|
||||||
|
contentType = mime.lookup(filename);
|
||||||
|
}
|
||||||
|
|
||||||
filename = randomHexString(32) + '_' + filename;
|
filename = randomHexString(32) + '_' + filename;
|
||||||
|
|
||||||
var location = this.adapter.getFileLocation(config, filename);
|
var location = this.adapter.getFileLocation(config, filename);
|
||||||
return this.adapter.createFile(config, filename, data, contentType).then(() => {
|
return this.adapter.createFile(config, filename, data, contentType).then(() => {
|
||||||
return Promise.resolve({
|
return Promise.resolve({
|
||||||
|
|||||||
@@ -2,9 +2,8 @@ import express from 'express';
|
|||||||
import BodyParser from 'body-parser';
|
import BodyParser from 'body-parser';
|
||||||
import * as Middlewares from '../middlewares';
|
import * as Middlewares from '../middlewares';
|
||||||
import { randomHexString } from '../cryptoUtils';
|
import { randomHexString } from '../cryptoUtils';
|
||||||
import mime from 'mime';
|
|
||||||
import Config from '../Config';
|
import Config from '../Config';
|
||||||
import path from 'path';
|
import mime from 'mime';
|
||||||
|
|
||||||
export class FilesRouter {
|
export class FilesRouter {
|
||||||
|
|
||||||
@@ -42,7 +41,7 @@ export class FilesRouter {
|
|||||||
var contentType = mime.lookup(filename);
|
var contentType = mime.lookup(filename);
|
||||||
res.set('Content-Type', contentType);
|
res.set('Content-Type', contentType);
|
||||||
res.end(data);
|
res.end(data);
|
||||||
}).catch(() => {
|
}).catch((err) => {
|
||||||
res.status(404);
|
res.status(404);
|
||||||
res.set('Content-Type', 'text/plain');
|
res.set('Content-Type', 'text/plain');
|
||||||
res.end('File not found.');
|
res.end('File not found.');
|
||||||
@@ -68,20 +67,8 @@ export class FilesRouter {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let filename = req.params.filename;
|
const filename = req.params.filename;
|
||||||
|
const contentType = req.get('Content-type');
|
||||||
// safe way to get the extension
|
|
||||||
let extname = path.extname(filename);
|
|
||||||
let contentType = req.get('Content-type');
|
|
||||||
|
|
||||||
const hasExtension = extname.length > 0;
|
|
||||||
|
|
||||||
if (!hasExtension && contentType && mime.extension(contentType)) {
|
|
||||||
filename = filename + '.' + mime.extension(contentType);
|
|
||||||
} else if (hasExtension && !contentType) {
|
|
||||||
contentType = mime.lookup(req.params.filename);
|
|
||||||
}
|
|
||||||
|
|
||||||
const config = req.config;
|
const config = req.config;
|
||||||
const filesController = config.filesController;
|
const filesController = config.filesController;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user