· server · 1 min 阅读
Koa 代理图片
Koa 作为上传中间件,并设置代理
- koa 代理图片上传中间件
const axios = require('axios')
module.exports = async (ctx, next) => {
var req = ctx.req
var p = new Promise((resolve, reject) => {
var buffers = []
req.on('data', chunk => {
buffers.push(chunk)
})
req.on('end', async () => {
let requestBody = Buffer.concat(buffers)
axios({
url: `https://i.qtum-cat.com/api/v1/upload`,
method: 'POST',
headers: {
'content-type': req.headers['content-type'],
Authorization: `*****************`
},
data: requestBody
})
.then(res => {
resolve(res.data)
})
.catch(err => {
reject(err)
})
})
req.on('error', function () {
ctx.body = {
code: 0,
message: '获取上传文件失败'
}
})
})
var info = await p
if (info.status) {
ctx.lskyInfo = info.data
await next()
} else {
ctx.body = {
code: 0,
message: '上传文件到图床失败'
}
}
}
- koa 代理转发(转发兰空图床失败)
var proxy = require('koa-better-http-proxy')
var Koa = require('koa')
const router = require('koa-router')()
var app = new Koa()
router.get(
'/test',
proxy('localhost:4189', {
proxyReqPathResolver: function (ctx) {
return '/test' //自定义路径
},
proxyReqOptDecorator: function (proxyReqOpts, ctx) {
proxyReqOpts.headers.token = '123' //自定义请求头部
return proxyReqOpts
}
})
)
app.use(router.routes())
app.use(router.allowedMethods())
app.listen('3000')
分享: