summaryrefslogtreecommitdiff
path: root/app/api
diff options
context:
space:
mode:
Diffstat (limited to 'app/api')
-rw-r--r--app/api/richtext/route.ts54
-rw-r--r--app/api/vendor-responses/update-comment/route.ts2
-rw-r--r--app/api/vendor-responses/update/route.ts1
3 files changed, 57 insertions, 0 deletions
diff --git a/app/api/richtext/route.ts b/app/api/richtext/route.ts
new file mode 100644
index 00000000..3d050dc5
--- /dev/null
+++ b/app/api/richtext/route.ts
@@ -0,0 +1,54 @@
+import { NextRequest, NextResponse } from 'next/server';
+import { writeFile, mkdir } from 'fs/promises';
+import { join } from 'path';
+import { randomUUID } from 'crypto';
+
+export async function POST(req: NextRequest) {
+ try {
+ const formData = await req.formData();
+ const file = formData.get('file') as File;
+
+ console.log(file)
+
+ if (!file) {
+ return NextResponse.json({ error: '파일이 없습니다.' }, { status: 400 });
+ }
+
+ // 파일 확장자 검증
+ const allowedTypes = ['image/jpeg', 'image/png', 'image/webp', 'image/gif'];
+ if (!allowedTypes.includes(file.type)) {
+ return NextResponse.json({ error: '지원하지 않는 파일 형식입니다.' }, { status: 400 });
+ }
+
+ // 파일 크기 제한 (5MB)
+ if (file.size > 5 * 1024 * 1024) {
+ return NextResponse.json({ error: '파일 크기는 5MB 이하여야 합니다.' }, { status: 400 });
+ }
+
+ // 업로드 디렉토리 생성
+ const uploadDir = join(process.cwd(), 'public', 'uploads', 'richtext');
+ await mkdir(uploadDir, { recursive: true });
+
+ // 고유한 파일명 생성
+ const fileExtension = file.name.split('.').pop();
+ const fileName = `${randomUUID()}.${fileExtension}`;
+ const filePath = join(uploadDir, fileName);
+
+ // 파일 저장
+ const arrayBuffer = await file.arrayBuffer();
+ await writeFile(filePath, new Uint8Array(arrayBuffer));
+
+ // 공개 URL 반환
+ const fileUrl = `/uploads/richtext/${fileName}`;
+
+ return NextResponse.json({
+ success: true,
+ url: fileUrl,
+ message: '이미지가 성공적으로 업로드되었습니다.'
+ });
+
+ } catch (error) {
+ console.error('파일 업로드 실패:', error);
+ return NextResponse.json({ error: '파일 업로드에 실패했습니다.' }, { status: 500 });
+ }
+} \ No newline at end of file
diff --git a/app/api/vendor-responses/update-comment/route.ts b/app/api/vendor-responses/update-comment/route.ts
index 212173d7..f1e4c487 100644
--- a/app/api/vendor-responses/update-comment/route.ts
+++ b/app/api/vendor-responses/update-comment/route.ts
@@ -5,6 +5,7 @@ import { vendorAttachmentResponses } from "@/db/schema";
import { getServerSession } from "next-auth/next"
import { authOptions } from "@/app/api/auth/[...nextauth]/route"
+import { eq } from "drizzle-orm";
export async function POST(request: NextRequest) {
try {
@@ -34,6 +35,7 @@ export async function POST(request: NextRequest) {
responseComment,
vendorComment,
updatedAt: new Date(),
+ updatedBy:Number(session?.user.id)
})
.where(eq(vendorAttachmentResponses.id, parseInt(responseId)))
.returning();
diff --git a/app/api/vendor-responses/update/route.ts b/app/api/vendor-responses/update/route.ts
index 8771b062..5ee31d4d 100644
--- a/app/api/vendor-responses/update/route.ts
+++ b/app/api/vendor-responses/update/route.ts
@@ -94,6 +94,7 @@ export async function POST(request: NextRequest) {
vendorComment,
respondedAt: respondedAt ? new Date(respondedAt) : null,
updatedAt: new Date(),
+ updatedBy:Number(session?.user.id)
})
.where(eq(vendorAttachmentResponses.id, parseInt(responseId)))
.returning();