21xrx.com
2025-03-21 21:20:40 Friday
文章检索 我的文章 写文章
Node.js上传文件的POST请求
2023-07-04 21:41:10 深夜i     68     0
Node js 上传文件 POST请求 multipart/form-data formidable

Node.js是一个跨平台运行的JavaScript运行环境,可以让前端JavaScript语言也能够应用到后端服务器开发中。这个在开源社区中广泛使用的工具也能够方便地上传文件,本文将为大家介绍Node.js中如何使用POST请求上传文件。

上传文件是Web开发中一项非常基础的功能,而Node.js的express框架已经为我们提供了非常方便的文件上传模块,我们只需要简单几步就可以快速地完成文件上传。下面就让我们来详细讨论如何使用POST请求上传文件。

首先,我们需要在Node.js中安装express框架。通过命令行输入以下代码即可安装:`npm install express` 。

接下来,我们需要使用Node.js内置的http模块或引入外部模块(例如`http.createServer()` )创建一个HTTP服务器,然后使用express框架的中间件express.json()和express.urlencoded()解析请求体(body)里的数据并将其放入req.body 中。

const http = require('http');
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

之后就可以定义路由,编写上传文件的代码。

app.post('/uploadFile', (req, res) => {
 let file = req.body.file;
 // 文件存放目录
 let fileDir = './uploads';
 // 以当前日期命名新文件
 let newFileName = `${new Date().toISOString().replace(/[.:\s]/g, '')}${file.name}`;
 // 拼接文件上传路径和新文件名
 let filePath = `${fileDir}/${newFileName}`;
 // 使用fs模块的createWriteStream方法写入文件
 let stream = fs.createWriteStream(filePath);
 stream.write(file.data);
 stream.end();
 res.send('File upload successful!');
});

以上代码的主要流程是从HTTP请求中获取上传文件,然后将文件的数据以流的形式写入到指定的文件路径。在上述代码中,我们使用了Node.js内置的fs模块将文件写入磁盘。当然,可以使用其他的方式,例如mongoose等框架来存储文件。

最后,我们需要将应用程序监听固定的端口,以便外部客户端可以访问该应用程序。

const server = http.createServer(app);
server.listen(3000, () => console.log('Server start!'));

通过以上代码,我们就可以使用POST请求上传文件了。用户需要在表单中选择要上传的文件,并使用XHR发送POST请求附带文件数据。在发起请求时需要将请求头中的Content-Type设置为multipart/form-data,具体可以通过FormData对象来实现。

javascript
let fileInput = document.querySelector('input[type="file"]');
fileInput.addEventListener('change', () => {
 let file = fileInput.files[0];
 let formData = new FormData();
 formData.append('file', file);
 
 // 向服务器发起POST请求
 fetch('/uploadFile', {
  method: 'POST',
  headers:
   'Content-Type': 'multipart/form-data'
  ,
  body: formData
 });
});

以上代码可以监听表单输入框的文件选择,并通过fetch函数发起POST请求。需要注意的是,在这个例子中我们手动设置了请求头中的Content-Type为multipart/form-data,这是因为FormData对象在发送请求时会自动设置Content-Type。

总之,Node.js提供了非常丰富的工具和框架,可以很方便地实现文件上传功能。使用POST请求上传文件的步骤虽然看上去比较繁琐,但是只要掌握了相关知识,就可以非常快速地实现一个稳定、高效的文件上传功能。

  
  

评论区