diff --git a/src/app/api/qna/file/route.ts b/src/app/api/qna/file/route.ts index 01930f2..602bbd6 100644 --- a/src/app/api/qna/file/route.ts +++ b/src/app/api/qna/file/route.ts @@ -1,33 +1,73 @@ import axios from 'axios' import { NextResponse } from 'next/server' +// export async function GET(request: Request) { +// const { searchParams } = new URL(request.url) +// const encodeFileNo = searchParams.get('encodeFileNo') +// const srcFileNm = searchParams.get('srcFileNm') + +// if (!encodeFileNo) { +// return NextResponse.json({ error: 'encodeFileNo is required' }, { status: 400 }) +// } + +// try { +// const response = await axios.get(`${process.env.NEXT_PUBLIC_INQUIRY_API_URL}/api/file/downloadFile2`, { +// params: { +// encodeFileNo, +// }, +// responseType: 'arraybuffer', +// }) + +// if (response.headers['content-type'] === 'text/html;charset=utf-8') { +// return NextResponse.json({ error: 'file not found' }, { status: 404 }) +// } + +// const contentType = response.headers['content-type'] || 'application/octet-stream' +// const contentDisposition = response.headers['content-disposition'] || 'inline' + +// return new NextResponse(response.data, { +// status: 200, +// headers: { +// 'Content-Type': contentType, +// 'Content-Disposition': contentDisposition, +// }, +// }) +// } catch (error: any) { +// console.error('File download error:', error) +// return NextResponse.json({ error: error.response?.data || 'Failed to download file' }, { status: 500 }) +// } +// } + export async function GET(request: Request) { const { searchParams } = new URL(request.url) const encodeFileNo = searchParams.get('encodeFileNo') - - const srcFileNm = searchParams.get('srcFileNm') + const srcFileNm = searchParams.get('srcFileNm') || 'downloaded-file' if (!encodeFileNo) { return NextResponse.json({ error: 'encodeFileNo is required' }, { status: 400 }) } + + const url = `${process.env.NEXT_PUBLIC_INQUIRY_API_URL}/api/file/downloadFile2?encodeFileNo=${encodeFileNo}` + try { - const response = await axios.get(`${process.env.NEXT_PUBLIC_INQUIRY_API_URL}/api/file/downloadFile2`, { - responseType: 'arraybuffer', - params: { - encodeFileNo, - }, - }) - if (response.headers['content-type'] === 'text/html;charset=utf-8') { - return NextResponse.json({ error: 'file not found' }, { status: 404 }) + const resp = await fetch(url) + + if (!resp.ok) { + return NextResponse.json({ error: 'Failed to download file' }, { status: 500 }) } - return new NextResponse(response.data, { + + const contentType = resp.headers.get('content-type') || 'application/octet-stream' + const contentDisposition = resp.headers.get('content-disposition') || `attachment; filename="${srcFileNm}"` + + return new NextResponse(resp.body, { status: 200, headers: { - 'Content-Type': 'application/octet-stream;charset=UTF-8', - 'Content-Disposition': `attachment; filename="${srcFileNm}"`, + 'Content-Type': contentType, + 'Content-Disposition': contentDisposition, }, }) } catch (error: any) { - return NextResponse.json({ error: error.response.data }, { status: 500 }) + console.error('File download error:', error) + return NextResponse.json({ error: error.response?.data || 'Failed to download file' }, { status: 500 }) } } diff --git a/src/components/inquiry/list/ListForm.tsx b/src/components/inquiry/list/ListForm.tsx index badcbcd..878a7e5 100644 --- a/src/components/inquiry/list/ListForm.tsx +++ b/src/components/inquiry/list/ListForm.tsx @@ -5,7 +5,7 @@ import { useState } from 'react' export default function ListForm() { const router = useRouter() - const { inquiryListRequest, setInquiryListRequest, reset } = useInquiryFilterStore() + const { inquiryListRequest, setInquiryListRequest, reset, setOffset } = useInquiryFilterStore() const [searchKeyword, setSearchKeyword] = useState(inquiryListRequest.schTitle ?? '') const handleSearch = () => { @@ -40,6 +40,19 @@ export default function ListForm() { onChange={(e) => setSearchKeyword(e.target.value)} onKeyDown={handleKeyDown} /> + {searchKeyword && ( + + )} diff --git a/src/components/inquiry/list/ListTable.tsx b/src/components/inquiry/list/ListTable.tsx index cbb88af..14ffece 100644 --- a/src/components/inquiry/list/ListTable.tsx +++ b/src/components/inquiry/list/ListTable.tsx @@ -86,7 +86,7 @@ export default function ListTable() {