feat: Cloudflare R2 对象存储支持

This commit is contained in:
Hk-Gosuto
2023-09-16 19:01:35 +08:00
parent 6d8150a1b0
commit 2947274ce6
7 changed files with 1156 additions and 21 deletions

View File

@@ -0,0 +1,36 @@
import { NextRequest, NextResponse } from "next/server";
import { auth } from "../../auth";
import S3FileStorage from "../../../utils/r2_file_storage";
async function handle(
req: NextRequest,
{ params }: { params: { path: string[] } },
) {
if (req.method === "OPTIONS") {
return NextResponse.json({ body: "OK" }, { status: 200 });
}
const authResult = auth(req);
if (authResult.error) {
return NextResponse.json(authResult, {
status: 401,
});
}
try {
var file = await S3FileStorage.get(params.path[0]);
return new Response(file?.transformToWebStream(), {
headers: {
"Content-Type": "image/png",
},
});
} catch (e) {
return new Response("not found", {
status: 404,
});
}
}
export const GET = handle;
export const runtime = "edge";