Parçacıklara Dön
Node.jsTypeScript

Node.js Multer ile Dosya Yükleme

Tür, boyut ve depolama yapılandırması doğrulamalı dosya yükleme yönetimi.

nodejsfileuploadmulter
import multer from class=class="text-emerald-400">"text-emerald-400">'multer'
import path from class=class="text-emerald-400">"text-emerald-400">'path'
import crypto from class=class="text-emerald-400">"text-emerald-400">'crypto'
import type { Request } from class=class="text-emerald-400">"text-emerald-400">'express'

const ALLOWED_TYPES = [class=class="text-emerald-400">"text-emerald-400">'image/jpeg', class=class="text-emerald-400">"text-emerald-400">'image/png', class=class="text-emerald-400">"text-emerald-400">'image/webp', class=class="text-emerald-400">"text-emerald-400">'application/pdf']
const MAX_SIZE = 5 * 1024 * 1024 class=class="text-emerald-400">"text-gray">// 5MB

const storage = multer.diskStorage({
  destination: class=class="text-emerald-400">"text-emerald-400">'./uploads',
  filename: (_req, file, cb) => {
    const unique = crypto.randomBytes(8).toString(class=class="text-emerald-400">"text-emerald-400">'hex')
    const ext = path.extname(file.originalname)
    cb(null, class="text-emerald-400">`${Date.now()}-${unique}${ext}`)
  },
})

function fileFilter(_req: Request, file: Express.Multer.File, cb: multer.FileFilterCallback) {
  if (ALLOWED_TYPES.includes(file.mimetype)) {
    cb(null, true)
  } else {
    cb(new Error(class="text-emerald-400">`File type ${file.mimetype} is not allowed`))
  }
}

export const upload = multer({ storage, fileFilter, limits: { fileSize: MAX_SIZE } })

class=class="text-emerald-400">"text-gray">// Usage: app.post(class=class="text-emerald-400">"text-emerald-400">'/upload', upload.single(class=class="text-emerald-400">"text-emerald-400">'file'), handler)
class=class="text-emerald-400">"text-gray">// Access file: req.file — contains path, size, mimetype

Nasıl Kullanılır

Tekli dosya yüklemeleri için upload.single('file') veya çoklu dosyalar için upload.array('files', 5) kullanın. Dosya benzersiz bir isimle ./uploads'a kaydedilir. Route handler'ınızda req.file üzerinden meta verilere erişin.

İlgili Teknoloji

Node.js

Aklınızda Bir Proje mi Var?

Fikrinizi nasıl hayata geçirebileceğimizi konuşalım. İlk konseptten üretime hazır ürüne kadar — yanınızdayız.

veya ücretsiz görüşme ayarlayın