ホームページ > 記事 > ウェブフロントエンド > Next.js での画像のアップロード (ファイル アップロード、ファイルスタック)
Next.js への画像のアップロードは、Web アプリケーションを開発する際の一般的なタスクです。このチュートリアルでは、次の 2 つの異なるアプローチを検討します。
ステップ 1: Next.js でアップロード フォームを作成する
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 ( <form onSubmit={handleSubmit}> <input type="file" onChange={handleFileChange} /> <button type="submit">Upload</button> </form> ); }ステップ 2: アップロードを処理する API を作成する
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' }); } }ステップ 3: アップロード フォルダーを作成する
mkdir uploadsこれにより、画像を選択してサーバーに直接アップロードできるようになります。
3. Filestack を使用した画像のアップロード
Filestack などの外部サービスを使用したい場合は、次の方法で使用できます。
ステップ 1: ファイルスタックをインストールする
npm install filestack-jsステップ 2: フロントエンドで Filestack をセットアップする
実装例は次のとおりです:
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 ( <div> <button onClick={handleUpload}>Upload Image with Filestack</button> {imageUrl && <img src={imageUrl} alt="Uploaded Image" />} </div> ); }ステップ 3: Filestack API キーを取得する
API キー を生成する必要があります。上記のコードの YOUR_API_KEY を、提供されたものに置き換えます。
ステップ 4: アップロードした画像を表示する
{imageUrl && <img src={imageUrl} alt="Uploaded Image" />}4. 結論
以上がNext.js での画像のアップロード (ファイル アップロード、ファイルスタック)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。