πνλ‘κ·Έλλ°/Next.js
[Nextjs] νμΌ μ λ‘λ(file upload)
TwoIceFish
2023. 11. 22. 00:03
ν΄λΌμ΄μΈνΈ
const fileUpload = async (file: Blob) => {
const formData = new FormData();
formData.append('file', file, file.name); // νμΌ μ΄λ¦μ λͺ
μ
try {
const res = await fetch('/api/upload', {
method: 'POST',
body: formData,
});
const data = await res.json();
console.log('μλ² μλ΅:', data);
} catch (error) {
console.error('νμΌ μ
λ‘λ μ€ μ€λ₯:', error);
}
};
export default fileUpload;
μλ²(api/upload/route.ts.
import { NextRequest, NextResponse } from 'next/server';
import { writeFile } from 'fs/promises';
import { join } from 'path';
export const config = {
api: {
bodyParser: false,
},
};
export default async function handler(request: NextRequest, response: NextResponse) {
console.log('μ
λ‘λ API');
const data = await request.formData();
const file: File | null = data.get('file') as unknown as File;
if (!file) NextResponse.json({ success: false });
const bytes = await file.arrayBuffer();
const buffer = Buffer.from(bytes);
const path = join('/', 'tmp', file.name);
await writeFile(path, buffer);
console.log(`${path}}`);
NextResponse.json('μ
λ‘λ API');
}