0
0
Expressframework~5 mins

Single file upload in Express

Choose your learning style9 modes available
Introduction

Uploading a single file lets users send one file from their device to your server. This is useful for profile pictures, documents, or any single file input.

When a user needs to upload a profile photo on a website.
When a form requires a single document upload like a resume.
When you want to accept one image or file for processing or storage.
When you want to keep file uploads simple and limit to one file at a time.
Syntax
Express
const multer = require('multer');
const upload = multer({ dest: 'uploads/' });

app.post('/upload', upload.single('fileFieldName'), (req, res) => {
  // req.file contains the uploaded file info
  res.send('File uploaded');
});

upload.single('fileFieldName') tells multer to expect one file with the given form field name.

The uploaded file info is available in req.file.

Examples
This example uploads a single file from the form field named 'avatar'.
Express
app.post('/upload', upload.single('avatar'), (req, res) => {
  console.log(req.file);
  res.send('Avatar uploaded');
});
This example shows how to customize the file storage location and filename.
Express
const storage = multer.diskStorage({
  destination: (req, file, cb) => cb(null, 'uploads/'),
  filename: (req, file, cb) => cb(null, Date.now() + '-' + file.originalname)
});
const upload = multer({ storage });

app.post('/upload', upload.single('document'), (req, res) => {
  res.send('Document saved with custom filename');
});
Sample Program

This is a complete Express server that accepts a single file upload from a form field named 'file'. It saves the file in the 'uploads/' folder and responds with the original file name.

Express
const express = require('express');
const multer = require('multer');
const app = express();

const upload = multer({ dest: 'uploads/' });

app.post('/upload', upload.single('file'), (req, res) => {
  if (!req.file) {
    return res.status(400).send('No file uploaded');
  }
  res.send(`File uploaded: ${req.file.originalname}`);
});

app.listen(3000, () => {
  console.log('Server started on http://localhost:3000');
});
OutputSuccess
Important Notes

Make sure the 'uploads/' folder exists or multer will create it automatically.

Use req.file to access file details like filename, size, and path.

Always validate and sanitize uploaded files for security.

Summary

Use multer middleware with upload.single() to handle one file upload.

The uploaded file info is in req.file.

Customize storage and filename with multer options if needed.