Node.js: gestire i campi testuali in un form di upload

Node.js: gestire i campi testuali in un form di upload

In Node.js esiste una soluzione specifica per gestire i campi testuali in un form di upload.

La soluzione consiste nell'usare il package formidable:


'use strict';

const express = require('express');
const path = require('path');
const fs = require('fs');
const formidable = require('formidable');

const port = process.env.PORT || 8080;
const app = express();
const ABSPATH = path.dirname(process.mainModule.filename);

app.post('/upload', function(req, res) {

  let form = new formidable.IncomingForm();
  
  form.multiples = false;
  form.uploadDir = ABSPATH + '/uploads';

  form.on('file', function(field, file) {
    fs.rename(file.path, path.join(form.uploadDir, file.name));
  });

  form.on('error', function(err) {
     // Gestion errori
  });

  form.parse(req, function(err, fields, files) {
     // Gestione richiesta
  });
});

app.listen(port);

Il metodo .parse() ci permette di accedere agli oggetti fields e files che contengono rispettivamente i campi testuali del form e il campo file. I nomi delle proprietà di questi oggetti sono dati dagli attributi name degli elementi del form.

Documentazione

formidable

Torna su