@mvx/mvc
Version:
@mvx/mvc is mvc framework on server, base on koa, @tsdi frameworks
48 lines (46 loc) • 1.56 kB
JavaScript
;
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