Le téléchargement d'images dans Next.js est une tâche courante lors du développement d'applications Web. Dans ce didacticiel, nous explorerons deux approches différentes :
Voyons d'abord comment gérer les téléchargements de fichiers directement dans Next.js sans utiliser de services externes.
Créez un formulaire dans le composant souhaité pour sélectionner et télécharger une image. Ici, nous utilisons useState pour stocker le fichier et le récupérer pour l'envoyer au 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 (); }
Maintenant, créez un point de terminaison dans Next.js pour traiter l'image dans le backend. Nous utiliserons les routes API de Next.js pour gérer les opérations côté serveur.
Créez un fichier dans 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' }); } }
Assurez-vous d'avoir un dossier appelé uploads à la racine de votre projet. Vous pouvez le créer manuellement :
mkdir uploads
Avec cela, vous pouvez désormais sélectionner une image et la télécharger directement sur votre serveur.
Maintenant, si vous préférez utiliser un service externe tel que Filestack, qui offre un hébergement de fichiers, un CDN et une gestion efficace des images, voici comment procéder.
Tout d'abord, nous devons installer le package Filestack dans votre projet Next.js.
npm install filestack-js
Ensuite, configurons le widget Filestack dans un composant afin que les utilisateurs puissent sélectionner et télécharger des images. C'est simple, car Filestack fournit un widget prêt à l'emploi.
Voici un exemple de mise en œuvre :
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 && }); }
Pour que Filestack fonctionne, vous devez créer un compte sur Filestack et générer votre Clé API. Remplacez YOUR_API_KEY dans le code ci-dessus par celui qui vous a été fourni.
Une fois que l'utilisateur télécharge une image, vous pouvez l'afficher à l'aide de l'URL générée par Filestack :
{imageUrl && }
Et c'est tout ! Vous disposez désormais de deux approches pour gérer les téléchargements d'images dans une application Next.js :
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3