"use client"; import { useRef, useState } from "react"; import { useRouter } from "next/navigation"; export function UploadForm() { const router = useRouter(); const formRef = useRef(null); const [busy, setBusy] = useState(false); const [error, setError] = useState(null); async function onSubmit(e: React.FormEvent) { e.preventDefault(); if (!formRef.current) return; const fd = new FormData(formRef.current); const file = fd.get("file"); if (!(file instanceof File) || file.size === 0) { setError("파일을 선택하세요."); return; } setBusy(true); setError(null); try { const res = await fetch("/api/documents", { method: "POST", body: fd, }); if (!res.ok) { const text = await res.text(); setError(`업로드 실패 (${res.status}): ${text}`); return; } formRef.current.reset(); router.refresh(); } finally { setBusy(false); } } return (
{error ? {error} : null}
); }