Fazer upload de imagens em Next.js é uma tarefa comum no desenvolvimento de aplicações web. Neste tutorial, exploraremos duas abordagens diferentes:
Primeiro, vamos ver como você pode lidar com uploads de arquivos diretamente em Next.js sem usar serviços externos.
Crie um formulário no componente desejado para selecionar e fazer upload de uma imagem. Aqui, usamos useState para armazenar o arquivo e fetch para enviá-lo ao backend.
import { useState } from 'react'; export default function UploadForm() { const [selectedFile, setSelectedFile] = useState(null); const handleFileChange = (event) => { setSelectedFile(event.target.files[0]); }; const handleSubmit = async (event) => { event.preventDefault(); const formData = new FormData(); formData.append('file', selectedFile); const response = await fetch('/api/upload', { method: 'POST', body: formData, }); if (response.ok) { console.log('File uploaded successfully'); } else { console.error('Error uploading file'); } }; return (); }
Agora, crie um endpoint em Next.js para processar a imagem no backend. Usaremos as rotas API do Next.js para lidar com operações do lado do servidor.
Crie um arquivo em pages/api/upload.js:
import fs from 'fs'; import path from 'path'; export const config = { api: { bodyParser: false, // Disable bodyParser to handle large files }, }; export default async function handler(req, res) { if (req.method === 'POST') { const chunks = []; req.on('data', (chunk) => { chunks.push(chunk); }); req.on('end', () => { const buffer = Buffer.concat(chunks); const filePath = path.resolve('.', 'uploads', 'image.png'); // Saves to the `uploads` folder fs.writeFileSync(filePath, buffer); res.status(200).json({ message: 'File uploaded successfully' }); }); } else { res.status(405).json({ message: 'Method not allowed' }); } }
Certifique-se de ter uma pasta chamada uploads na raiz do seu projeto. Você pode criá-lo manualmente:
mkdir uploads
Com isso, agora você pode selecionar uma imagem e carregá-la diretamente para o seu servidor.
Agora, se você preferir usar um serviço externo como o Filestack, que oferece hospedagem de arquivos, CDN e manipulação eficiente de imagens, veja como fazer isso.
Primeiro, precisamos instalar o pacote Filestack em seu projeto Next.js.
npm install filestack-js
A seguir, vamos configurar o widget Filestack em um componente para que os usuários possam selecionar e fazer upload de imagens. Isso é simples, pois o Filestack fornece um widget pronto para uso.
Aqui está um exemplo de implementação:
import { useState } from 'react'; import * as filestack from 'filestack-js'; const client = filestack.init('YOUR_API_KEY'); // Replace with your API Key export default function FilestackUpload() { const [imageUrl, setImageUrl] = useState(''); const handleUpload = async () => { const result = await client.picker({ onUploadDone: (res) => { setImageUrl(res.filesUploaded[0].url); console.log('File uploaded: ', res.filesUploaded[0].url); }, }).open(); }; return ({imageUrl && }); }
Para que o Filestack funcione, você precisa criar uma conta no Filestack e gerar sua API Key. Substitua YOUR_API_KEY no código acima pelo fornecido a você.
Depois que o usuário fizer upload de uma imagem, você poderá exibi-la usando a URL gerada pelo Filestack:
{imageUrl && }
E é isso! Agora você tem duas abordagens para lidar com uploads de imagens em um aplicativo Next.js:
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3