21xrx.com
2024-12-23 01:11:04 Monday
登录
文章检索 我的文章 写文章
Node.js FormData上传文件
2023-07-05 22:24:07 深夜i     --     --
Node js FormData 上传文件

随着互联网技术的发展,上传文件成为了一种常见的操作,现在很多网站都支持上传图片、视频等文件。Node.js虽然是一个服务器端JavaScript运行环境,但也能支持文件上传。本文将介绍如何利用Node.js,使用FormData上传文件。

1. 安装依赖

首先,我们需要安装依赖。Node.js提供了一个内置的HTTP模块,我们只需要安装第三方依赖form-data,就能使用FormData来处理文件上传。打开命令行,输入以下命令进行安装:


npm install form-data --save

2. 创建HTTP服务器

接下来,我们利用Node.js内置的HTTP模块,创建一个简单的HTTP服务器:


const http = require('http');

http.createServer((req, res) => {

 res.writeHead(200, {'Content-Type': 'text/html'});

 res.write('<form action="/" method="post" enctype="multipart/form-data">');

 res.write('<input type="file" name="file"><br>');

 res.write('<input type="submit">');

 res.write('</form>');

 if(req.method === 'POST') {

  let form = new FormData();

  req.on('data', (chunk) => {

   form.append('file', chunk);

  });

  req.on('end', () => {

   res.end('File uploaded!');

  });

 }

}).listen(3000);

console.log('Server running at http://localhost:3000/');

我们创建了一个HTTP服务器,并在其中加入一个上传文件的表单。当用户点击提交按钮时,触发POST请求,我们通过FormData将文件数据传输到后台服务器。注意:这里我们硬编码了监听的端口号为3000,你也可以修改为其他端口号。

3. 处理上传的文件

用户上传的文件数据通过FormData以chunk的方式传输到后台服务器,我们需要将这些文件数据整合在一起,然后写入服务器硬盘。


const http = require('http');

const FormData = require('form-data');

const fs = require('fs');

http.createServer((req, res) => {

 res.writeHead(200, {'Content-Type': 'text/html'});

 res.write('<form action="/" method="post" enctype="multipart/form-data">');

 res.write('<input type="file" name="file"><br>');

 res.write('<input type="submit">');

 res.write('</form>');

 if(req.method === 'POST') {

  let form = new FormData();

  req.on('data', (chunk) => {

   form.append('file', chunk);

  });

  req.on('end', () => {

   form.pipe(fs.createWriteStream(__dirname + '/file.txt'));

   res.end('File uploaded!');

  });

 }

}).listen(3000);

console.log('Server running at http://localhost:3000/');

我们通过pipe方法,将上传的文件数据通过可写流写入到服务器硬盘上的file.txt文件中。

4. 总结

本文介绍了如何使用Node.js和FormData上传文件。通过安装第三方依赖form-data,我们能够轻松实现文件上传功能。上传的文件数据通过FormData以chunk的方式传输到后台服务器,我们需要将这些文件数据整合在一起,然后写入服务器硬盘。希望本文能够帮助读者掌握Node.js文件上传的基本操作。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复