UNPKG

@mvx/mvc

Version:

@mvx/mvc is mvc framework on server, base on koa, @tsdi frameworks

48 lines (46 loc) 1.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FileResult = void 0; const ioc_1 = require("@tsdi/ioc"); const stream_1 = require("stream"); const fs_1 = require("fs"); const path_1 = require("path"); const ResultValue_1 = require("./ResultValue"); /** * controller method return result type of file. * * @export * @class FileResult */ class FileResult extends ResultValue_1.ResultValue { constructor(file, options) { super((options === null || options === void 0 ? void 0 : options.contentType) || 'application/octet-stream'); this.file = file; this.options = options; } async sendValue(ctx) { let file = this.file; ctx.type = this.contentType; if (this.options && this.options.filename) { ctx.attachment(this.options.filename, this.options.disposition); } let confige = ctx.mvcContext.getConfiguration(); if (ioc_1.isString(file)) { let filepath = (path_1.isAbsolute(file) || !confige.baseURL) ? file : path_1.join(confige.baseURL, file); if (fs_1.existsSync(filepath)) { ctx.body = fs_1.createReadStream(filepath); } } else if (file instanceof Buffer) { ctx.body = file; } else if (file instanceof stream_1.Stream) { ctx.body = file; } } static ρAnn() { return { "name": "FileResult" }; } } exports.FileResult = FileResult; //# sourceMappingURL=../sourcemaps/results/FileResult.js.map