@mvx/mvc
Version:
@mvx/mvc is mvc framework on server, base on koa, @tsdi frameworks
58 lines (56 loc) • 2.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FileResult = void 0;
var tslib_1 = require("tslib");
var ioc_1 = require("@tsdi/ioc");
var stream_1 = require("stream");
var fs_1 = require("fs");
var path_1 = require("path");
var ResultValue_1 = require("./ResultValue");
/**
* controller method return result type of file.
*
* @export
* @class FileResult
*/
var FileResult = /** @class */ (function (_super) {
tslib_1.__extends(FileResult, _super);
function FileResult(file, options) {
var _this = _super.call(this, (options === null || options === void 0 ? void 0 : options.contentType) || 'application/octet-stream') || this;
_this.file = file;
_this.options = options;
return _this;
}
FileResult.prototype.sendValue = function (ctx) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var file, confige, filepath;
return tslib_1.__generator(this, function (_a) {
file = this.file;
ctx.type = this.contentType;
if (this.options && this.options.filename) {
ctx.attachment(this.options.filename, this.options.disposition);
}
confige = ctx.mvcContext.getConfiguration();
if (ioc_1.isString(file)) {
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;
}
return [2 /*return*/];
});
});
};
FileResult.ρAnn = function () {
return { "name": "FileResult" };
};
return FileResult;
}(ResultValue_1.ResultValue));
exports.FileResult = FileResult;
//# sourceMappingURL=../sourcemaps/results/FileResult.js.map