gpt4 book ai didi

node.js - 使用 fs 流获取图片的 api 使用 connect-history-api-fallback 返回 304

转载 作者:太空宇宙 更新时间:2023-11-04 00:09:58 27 4
gpt4 key购买 nike

获取图片的代码

// get /avatar/file_id
router.get('/avatar', async (req, res, next) => {
const id = req.query.file_id
const url = await FileModel.getFilePath(id)
res.set('content-type', 'image/jpg')
let stream = fs.createReadStream(url)
let responseData = []; // 存储文件流
// res['cache-control'] = 'no-store'
if (stream) { // 判断状态
stream.on('data', chunk => {
responseData.push(chunk)
})
stream.on('end', () => {
let finalData = Buffer.concat(responseData)
res.write(finalData)
res.end();
});
}
})

使用 connect-history-api-fallback 的代码

const express = require('express')
const session = require('express-session')
const bodyParser = require('body-parser')
const routes = require('./routes')
const history = require('connect-history-api-fallback')
const path = require('path')
const favicon = require('serve-favicon')
const app = new express()
// app.use(history())
app.use(bodyParser.urlencoded({extended: true}))
app.use(express.static(path.join(__dirname, '../dist')))
app.use(favicon(path.join(__dirname, './favicon.ico')))
const sessionStore = new session.MemoryStore({ reapInterval: 3600 * 1000 })
app.use(session({
secret: 'Stefanie Sun',
store: sessionStore,
resave: true, // 强制更新 session
saveUninitialized: true, //
cookie: { maxAge: 3600 * 1000 }, // 过期时间
rolling: true
}))
routes(app)
app.listen('80', () => console.log('running'))

我无法通过这种方式获取照片

enter image description here

但是当我删除 connect-history-api-fallback 时,它就起作用了!

最佳答案

我发现所有的get请求都会用这个中间件代理到索引,并且我可以重写请求

app.use(history({
rewrites: [
{
from: /^\/api\/.*$/,
to: function(context) {
return context.parsedUrl.path
}
}
]
}))

然后就可以了

关于node.js - 使用 fs 流获取图片的 api 使用 connect-history-api-fallback 返回 304,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50322872/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com