Node.js 是一种基于 Chrome V8 引擎的 JavaScript 运行环境,它可以在服务器端运行 JavaScript 代码。在前端开发中,我们通常会用到 Node.js 来进行一些后台处理工作,比如文件上传和下载。本文将介绍如何使用 Node.js 处理文件上传和下载,希望对前端开发者有所帮助。
文件上传
在 Web 应用程序中,文件上传是一个非常常见的功能。Node.js 提供了一个内置的模块 fs
,它可以用来处理文件系统。我们可以使用 fs
模块来处理文件上传。
实现原理
文件上传的实现原理是客户端将文件上传到服务器,服务器将文件保存到本地文件系统中。在 Node.js 中,文件上传可以通过以下步骤来实现:
- 创建一个 HTTP 服务器;
- 监听 HTTP 请求的
data
和end
事件; - 在
data
事件中,将上传的文件保存到指定的文件夹中; - 在
end
事件中,返回一个上传成功的响应。
代码实现
下面是一个简单的文件上传的示例代码:
// javascriptcn.com 代码示例 const http = require('http'); const formidable = require('formidable'); const fs = require('fs'); http.createServer(function(req, res) { if (req.url === '/upload' && req.method.toLowerCase() === 'post') { const form = new formidable.IncomingForm(); form.parse(req, function(err, fields, files) { const oldPath = files.file.path; const newPath = 'uploads/' + files.file.name; fs.rename(oldPath, newPath, function(err) { if (err) throw err; res.writeHead(200, {'Content-Type': 'text/plain'}); res.write('Upload success'); res.end(); }); }); } else { res.writeHead(404, {'Content-Type': 'text/plain'}); res.write('Not found'); res.end(); } }).listen(3000);
在上面的代码中,我们使用了 formidable
模块来处理表单数据。在 form.parse()
方法中,我们可以获取上传的文件和表单数据。然后,我们将上传的文件保存到 uploads
文件夹中,并返回一个上传成功的响应。
文件下载
文件下载是将服务器上的文件发送到客户端的过程。在 Node.js 中,文件下载可以通过以下步骤来实现:
- 创建一个 HTTP 服务器;
- 监听 HTTP 请求;
- 在请求中,将文件内容发送到客户端。
代码实现
下面是一个简单的文件下载的示例代码:
// javascriptcn.com 代码示例 const http = require('http'); const fs = require('fs'); http.createServer(function(req, res) { if (req.url === '/download') { const filePath = 'downloads/file.txt'; const stat = fs.statSync(filePath); res.writeHead(200, { 'Content-Type': 'application/octet-stream', 'Content-Length': stat.size, 'Content-Disposition': 'attachment; filename=file.txt' }); const readStream = fs.createReadStream(filePath); readStream.pipe(res); } else { res.writeHead(404, {'Content-Type': 'text/plain'}); res.write('Not found'); res.end(); } }).listen(3000);
在上面的代码中,我们使用了 fs
模块来读取文件内容,并使用 createReadStream()
方法将文件内容发送到客户端。在响应头中,我们设置了 Content-Disposition
属性为 attachment
,表示要下载的文件。客户端收到响应后,会自动下载文件并保存到本地。
总结
本文介绍了如何使用 Node.js 处理文件上传和下载。在文件上传中,我们使用了 fs
模块和 formidable
模块来处理表单数据和上传的文件。在文件下载中,我们使用了 fs
模块和 createReadStream()
方法来读取文件内容并发送到客户端。希望本文能够对前端开发者有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65544c56d2f5e1655de01406