Node.js_formidable模块的使用

本文介绍了Node.js中formidable模块的使用,该模块用于处理POST请求,特别在文件上传方面表现出色,包括图片和zip文件等。要开始使用,可以通过API地址了解详情,并通过淘宝镜像安装formidable。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • formidable模块

formidable模块可以用来处理post请求。甚至可以处理图片、zip文件等的上传。

API地址 formidable模块API地址

  • 安装formidable模块(使用淘宝镜像安装)

$ cnpm install --save formidable
在这里插入图片描述

//06 用formidable模块演示post请求
var finalhandler = require('finalhandler')
var http = require('http')
var serveStatic = require('serve-static')
var url=require("url");
var fs=require("fs");
var querystring=require("querystring");
// 引用formidable模块
var formidable = require('formidable');

//配置静态资源服务器,将public文件夹静态化出来。
var serve = serveStatic('public', {'index': ['index.html', 'index.htm']})

// Create server
var server = http.createServer(function onRequest (req, res) {
  
  //路由
  var pathname=url.parse(req.url).pathname;
  if(pathname=="/addStudent"){
    //创建一个表单的实例
    var form = new formidable.IncomingForm();
    //处理表单
    form.parse(req, function(err, fields, files) {
      //field 表示普通控件
      //files  表示文件控件
      console.log(fields);
    });
    return;
      
  }
  //使用静态资源
  serve(req, res, finalhandler(req, res));
})

// Listen
server.listen(3000);
console.log("服务器正在运行");

在这里插入图片描述

<!-- index2.html -->
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<form action="shangchuan" method="post" enctype="multipart/form-data">
		<p>
			请上传一个头像:
			
			<input type="file" name="filename" />
		</p>
		<p>
			<input type="submit" value="提交">
		</p>
	</form>
</body>
</html>

在这里插入图片描述

//06 用formidable模块演示post请求
var finalhandler = require('finalhandler')
var http = require('http')
var serveStatic = require('serve-static')
var url=require("url");
var fs=require("fs");
var querystring=require("querystring");
// 引用formidable模块
var formidable = require('formidable');
// 
var path=require("path");

//配置静态资源服务器,将public文件夹静态化出来。
var serve = serveStatic('public', {'index': ['index.html', 'index.htm']})

// Create server
var server = http.createServer(function onRequest (req, res) {
  //设置response响应头部
  res.setHeader("Content-Type","text/html;charset=UTF-8");
  //路由
  var pathname=url.parse(req.url).pathname;
  
  if(pathname=="/shangchuan"){
    //创建一个表单的实例
    var form = new formidable.IncomingForm();
    //设置文件上传的目录 目录需手动创建
    form.uploadDir="./uploads";
    //处理表单
    form.parse(req, function(err, fields, files) {
      //field 表示普通控件
      //files  表示文件控件
      //console.log(files.filename);
      if(!files.filename){
        return;
      }
      if(!files.filename.name){
        res.end("请上传文件");
        return;
      }
      //获取拓展名
      var extname=path.extname(files.filename.name);
      //改名  formidable 模块不带扩展名,需自己添加
      fs.rename(files.filename.path,files.filename.path+extname,function(){
        res.end("上传成功");
      })
      // res.end("上传成功");
    });
    return;
      
  }
  //使用静态资源
  serve(req, res, finalhandler(req, res));
})

// Listen
server.listen(3000);
console.log("服务器正在运行");

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值