koa response image
2024-09-08 03:48:07
koa response image
koa.js
v1.x generator *function
v2.x Async/Await
koajs/examples
https://github.com/koajs/examples
https://github.com/koajs/examples/blob/master/stream-file/app.js
const Koa = require('koa');
const fs = require('fs');
const app = module.exports = new Koa();
const path = require('path');
const extname = path.extname;
// try GET /app.js
app.use(async function(ctx) {
const fpath = path.join(__dirname, ctx.path);
const fstat = await stat(fpath);
if (fstat.isFile()) {
ctx.type = extname(fpath);
ctx.body = fs.createReadStream(fpath);
}
});
if (!module.parent) app.listen(3000);
/**
* thunkify stat
*/
function stat(file) {
return new Promise(function(resolve, reject) {
fs.stat(file, function(err, stat) {
if (err) {
reject(err);
} else {
resolve(stat);
}
});
});
}
https://github.com/koajs/examples/tree/master/stream-server-side-events
https://github.com/koajs/examples/tree/master/templates/
demo
https://stackoverflow.com/questions/51571054/koa2-how-to-write-to-response-stream
'use strict';
const koa = require('koa');
const fs = require('fs');
const app = new koa();
const readable = require('stream').Readable
const s = new readable;
// response
app.use(ctx => {
if (ctx.request.url === '/stream') {
// stream data
s.push('STREAM: Hello, World!');
s.push(null); // indicates end of the stream
ctx.body = s;
} else if (ctx.request.url === '/file') {
// stream file
const src = fs.createReadStream('./big.file');
ctx.response.set("content-type", "txt/html");
ctx.body = src;
} else {
// normal KOA response
ctx.body = 'BODY: Hello, World!' ;
}
});
app.listen(8080);
OK
"use strict";
/**
*
* @author xgqfrms
* @license MIT
* @copyright xgqfrms
* @created 2020-02-22
* @modified
*
* @description
* @augments
* @example
* @link
*
*/
const log = console.log;
const Koa = require('koa');
const app = new Koa();
const fs = require('fs');
const path = require('path');
// const img = require('../poster.png');
// const readable = require('stream').Readable
// const s = new readable;
const img = fs.createReadStream('./poster.png');
// logger
app.use(async (ctx, next) => {
await next();
const rt = ctx.response.get('X-Response-Time');
log(`${ctx.method} ${ctx.url} - ${rt}`);
});
// x-response-time
app.use(async (ctx, next) => {
const start = Date.now();
await next();
const ms = Date.now() - start;
ctx.set('X-Response-Time', `${ms}ms`);
});
// response
app.use(async ctx => {
// node.js debugger
// log(`ctx`, ctx);
// log(`\nctx.request =\n`, JSON.stringify(ctx.request, null, 4));
// log(`\nctx.response \n`, JSON.stringify(ctx.response, null, 4));
// ctx.body = 'Hello World';
// ctx.body = img;
ctx.response.set("content-type", "image/png");
ctx.body = img;
// response image
});
app.listen(3000);
refs
xgqfrms 2012-2020
www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!
最新文章
- Junit的使用
- 重载Python FTP_TLS 实现Implicit FTP Over TLS方式下载文件
- D3(Data-Driven-Document)中的一些细节
- IOS图像拉伸解决方案
- mysql控制台命令
- Codeforces Gym 100803C Shopping 贪心
- eclipse添加hadoop开发插件
- vc++6.0修改字体
- 201521123077 《Java程序设计》第2周学习总结
- Redis4.0 Cluster — Centos7
- TP5 常用-方法技巧
- OpenCL异构计算资料收集
- jQuery的siblings方法
- webpack4之踩坑总结
- 集合框架之map
- Consul 域名服务
- 关闭Android ActionBar
- bat 脚本处理windows 文件
- zabbix系列(四)Zabbix3.0.4添加对Nginx服务的监控
- Oracle之表的相关操作
热门文章
- python join()方法的使用,可以应用到tcp压测发送指定数据长度的应用
- ts中提示“绑定元素“routes”隐式具有“any”类型”
- hadoop知识点总结(一)hadoop架构以及mapreduce工作机制
- YOLOv1论文解读
- MongoDB:原来我如此简单
- Hyperbase数据迁移
- MapReduce统计每个用户的使用总流量
- 2019牛客国庆集训派对day2
- zjnu1725 COCI (类似二维树状数组模拟)
- Codeforces Round #582 (Div. 3) F. Unstable String Sort