diff --git a/src/modules/fm-manager/proxy/ai-proxy.ts b/src/modules/fm-manager/proxy/ai-proxy.ts index ba1eb13..eee84523 100644 --- a/src/modules/fm-manager/proxy/ai-proxy.ts +++ b/src/modules/fm-manager/proxy/ai-proxy.ts @@ -391,3 +391,20 @@ export const aiProxy = async (req: IncomingMessage, res: ServerResponse, opts: P return getAiProxy(req, res, opts); }; + + +type SendOssOptions = { + /** + * 文件路径,必须 + * 例如:/root/resources/demo/1.0.0/readme.md + */ + filepath: string; + user?: { + username?: string; + id?: string; + } +} +// TODO: 这个函数需要重构,应该放在一个独立的模块中,需要完善权限校验等功能,单实现文件发送功能 +export const sendOss = async (res: ServerResponse, opts: SendOssOptions) => { + +} \ No newline at end of file diff --git a/src/routes/file/stream.ts b/src/routes/file/stream.ts new file mode 100644 index 0000000..5a1ef21 --- /dev/null +++ b/src/routes/file/stream.ts @@ -0,0 +1,29 @@ +import { app } from '@/app.ts'; +import { getFileStat, getMinioList, deleteFile, updateFileStat, deleteFileByPrefix } from './module/get-minio-list.ts'; +import path from 'path'; +import { CustomError } from '@kevisual/router'; +import { callDetectAppVersion } from '../app-manager/export.ts'; +import { UserId } from '../user/modules/user-id.ts'; +import { z } from 'zod'; +import { sendOss } from '@/modules/fm-manager/index.ts'; +app.route({ + path: 'file', + key: 'stream', + description: '文件读取,图片,文件等非文本文件的读取,返回文件流,send file 到前端', + middleware: ['auth'], + metadata: { + args: { + name: z.string().describe('文件路径, 例如/root/resources/demo/1.0.0/readme.md'), + } + } +}).define(async (ctx) => { + const name = ctx.args.name + if (!name) { + ctx.res.statusCode = 400 + ctx.res.end('文件路径是必填项') + return + } + let objectName = name; + const tokenUser = ctx.state.tokenUser; + await sendOss(ctx.res, { filepath: objectName, user: tokenUser }); +}).addTo(app) \ No newline at end of file