Node-Formidable 使用教程

Node-Formidable 使用教程

formidable formidable 项目地址: https://gitcode.com/gh_mirrors/formi/formidable

1. 项目介绍

Node-Formidable 是一个用于解析表单数据的 Node.js 模块,特别是文件上传。它拥有高速的multipart解析器,可以自动将文件上传写入磁盘(可选),并提供了一个插件API,允许自定义解析器和插件。Node-Formidable 经过多年的实战检验,具有低内存占用、优雅的错误处理和非常高的测试覆盖率等特点。

2. 项目快速启动

安装

Node-Formidable 支持Node.js 10.13及以上版本。可以使用 npmyarn 进行安装。

npm install formidable
# 或者
yarn add formidable

基础使用示例

以下是一个使用 Node.js 内置 http 模块的基础示例:

const http = require('http');
const formidable = require('formidable');

const server = http.createServer(async (req, res) => {
  if (req.url === '/api/upload' && req.method.toLowerCase() === 'post') {
    const form = new formidable.IncomingForm();
    let fields;
    let files;

    try {
      [fields, files] = await form.parse(req);
    } catch (err) {
      console.error(err);
      res.writeHead(err.httpCode || 400, {'Content-Type': 'text/plain'});
      res.end(String(err));
      return;
    }

    res.writeHead(200, {'Content-Type': 'application/json'});
    res.end(JSON.stringify({fields, files}, null, 2));
    return;
  }

  res.writeHead(200, {'Content-Type': 'text/html'});
  res.end(`
    <h2>With Node.js <code>"http"</code> module</h2>
    <form action="/api/upload" enctype="multipart/form-data" method="post">
      <div>Text field title: <input type="text" name="title" /></div>
      <div>File: <input type="file" name="multipleFiles" multiple="multiple" /></div>
      <input type="submit" value="Upload" />
    </form>
  `);
});

server.listen(8080, () => {
  console.log('Server listening on http://localhost:8080/ ...');
});

3. 应用案例和最佳实践

在实际应用中,Node-Formidable 可以与各种Web框架一起使用,比如 Express.js。下面是一个与 Express.js 结合使用的例子:

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

const app = express();

app.get('/', (req, res) => {
  res.send(`
    <h2>With <code>"express"</code> npm package</h2>
    <form action="/api/upload" enctype="multipart/form-data" method="post">
      <div>Text field title: <input type="text" name="title" /></div>
      <div>File: <input type="file" name="someExpressFiles" multiple="multiple" /></div>
      <input type="submit" value="Upload" />
    </form>
  `);
});

app.post('/api/upload', (req, res, next) => {
  const form = new formidable.IncomingForm();
  form.parse(req, (err, fields, files) => {
    if (err) {
      next(err);
      return;
    }
    res.json({fields, files});
  });
});

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

4. 典型生态项目

Node-Formidable 是一个成熟的模块,它已经被集成到许多生态项目中。以下是一些典型的使用 Node-Formidable 的项目:

  • multer: 一个中间件,用于处理 multipart/form-data 类型的表单数据,主要用于上传文件。
  • aws-sdk: AWS SDK for JavaScript,支持使用 Node-Formidable 上传文件到 Amazon S3。
  • Azure Storage: Azure Storage Node.js 客户端库,支持使用 Node-Formidable 上传文件到 Azure Blob 存储服务。

这些项目展示了 Node-Formidable 在不同场景下的灵活性和强大功能。

formidable formidable 项目地址: https://gitcode.com/gh_mirrors/formi/formidable

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

左唯妃Stan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值