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
|
||||
// Returns a promise
|
||||
createFile(config, filename: string, data, contentType: string) {
|
||||
createFile(config, filename: string, data, contentType) {
|
||||
return this._connect().then(database => {
|
||||
let gridStore = new GridStore(database, filename, 'w');
|
||||
return gridStore.open();
|
||||
|
||||
@@ -3,6 +3,8 @@ import { Parse } from 'parse/node';
|
||||
import { randomHexString } from '../cryptoUtils';
|
||||
import AdaptableController from './AdaptableController';
|
||||
import { FilesAdapter } from '../Adapters/Files/FilesAdapter';
|
||||
import path from 'path';
|
||||
import mime from 'mime';
|
||||
|
||||
export class FilesController extends AdaptableController {
|
||||
|
||||
@@ -11,7 +13,19 @@ export class FilesController extends AdaptableController {
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
var location = this.adapter.getFileLocation(config, filename);
|
||||
return this.adapter.createFile(config, filename, data, contentType).then(() => {
|
||||
return Promise.resolve({
|
||||
|
||||
@@ -2,9 +2,8 @@ import express from 'express';
|
||||
import BodyParser from 'body-parser';
|
||||
import * as Middlewares from '../middlewares';
|
||||
import { randomHexString } from '../cryptoUtils';
|
||||
import mime from 'mime';
|
||||
import Config from '../Config';
|
||||
import path from 'path';
|
||||
import mime from 'mime';
|
||||
|
||||
export class FilesRouter {
|
||||
|
||||
@@ -42,7 +41,7 @@ export class FilesRouter {
|
||||
var contentType = mime.lookup(filename);
|
||||
res.set('Content-Type', contentType);
|
||||
res.end(data);
|
||||
}).catch(() => {
|
||||
}).catch((err) => {
|
||||
res.status(404);
|
||||
res.set('Content-Type', 'text/plain');
|
||||
res.end('File not found.');
|
||||
@@ -68,20 +67,8 @@ export class FilesRouter {
|
||||
return;
|
||||
}
|
||||
|
||||
let filename = req.params.filename;
|
||||
|
||||
// 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 filename = req.params.filename;
|
||||
const contentType = req.get('Content-type');
|
||||
const config = req.config;
|
||||
const filesController = config.filesController;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user