diff --git a/server/api/upload/content.post.ts b/server/api/upload/content.post.ts new file mode 100644 index 0000000..463ba66 --- /dev/null +++ b/server/api/upload/content.post.ts @@ -0,0 +1,36 @@ +import { writeFileSync } from "fs"; +import { extname } from "path"; +import { v4 } from "uuid"; +import { ContentFilenameRegex } from "~/lib/server/constants"; +import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; + +export default eventHandler(async (ev) => { + const noMultipart = "no multipart data found!???!?"; + isLoggedIn(ev); + let mpd = await readMultipartFormData(ev); + if (!mpd) + throw createError({ + statusCode: 400, + message: noMultipart, + }); + + let file = mpd[0]; + if (!file) { + throw createError({ + statusCode: 400, + message: noMultipart, + }); + } + if (!ContentFilenameRegex.test(file.filename!)) { + throw createError({ + statusCode: 400, + message: "unsupported file type!", + }); + } + let b = `${v4()}.${extname(file.filename!)}`; + writeFileSync(`tmp/${b}`, file.data); + return { + success: true, + fileName: b, + }; +});