下面我将详细讲解“NodeJs实现简易WEB上传下载服务器”的完整攻略。
简介
本攻略介绍如何使用Node.js实现一个简单的WEB上传下载服务器。
准备工作
在开始实现本题之前,需要确保你已经安装了Node.js和npm。
创建项目并添加依赖
首先,创建一个文件夹作为你的工作目录,进入该文件夹,打开命令行工具,输入以下命令:
npm init
按照提示,完善项目信息。生成package.json文件。
接着,使用npm安装以下依赖项:
npm install express multer body-parser --save
这里的依赖项分别是:
- express:用于创建Web服务器。
- multer:用于处理文件上传。
- body-parser:解析HTTP请求中的RequestBody。
编写代码
配置文件上传
使用multer中间件实现文件上传功能。在index.js文件中添加如下代码段:
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
//配置body-parser
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
//设置“/upload”路由
app.post('/upload', multer({ dest: 'uploads/' }).single('file'), function(req, res) {
console.log(req.file);
res.send({ code: 200, message: '上传成功!' });
});
app.listen(3000, function() {
console.log('服务器已启动,监听端口3000。。。');
});
这段代码中,首先使用express和body-parser中间件创建了一个Web服务器,然后配置了文件上传路由,设置了上传目录为“uploads/”。
编写前端代码
我们可以使用简单的HTML页面完成文件上传和下载功能。创建一个名为“upload.html”的文件,添加如下代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文件上传和下载示例</title>
</head>
<body>
<h1>文件上传和下载示例</h1>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<br>
<input type="submit" value="上传">
</form>
<hr>
<a href="/download?filepath=/images/cat.png">下载图片</a>
</body>
</html>
这个HTML页面中,包含一个上传文件的表单和一个下载图片的链接。
配置文件下载
使用express的res.download()方法实现文件下载功能。在index.js文件中添加如下代码段:
//设置“/download”路由
app.get('/download', function(req, res) {
var filePath = req.query.filepath;
//检查文件是否存在
fs.access(filePath, function(err) {
if (err) {
res.send({ code: 404, message: '文件不存在!' });
return;
}
//如果文件存在,则下载该文件
res.download(filePath);
});
});
这段代码中,首先使用req.query获取前端传递的文件路径参数,然后使用fs.access()检查该文件是否存在,如果文件存在,则使用res.download()方法下载该文件。
示例说明
在上面的代码中,我们设置了上传目录为“uploads/”,此时我们启动Web服务器,然后打开“upload.html”页面,选择一个图片文件并上传,将会将该文件保存到服务器的“uploads/”目录下。接着,我们点击“下载图片”链接,将会下载该图片。
除了这个图片文件,您也可以上传其他类型的文件,下载方式相同。
总结
到这里,我们已经成功的实现了NodeJs实现简易WEB上传下载服务器的攻略。
完整的示例代码可以从GitHub仓库中获取:https://github.com/tangjinjie/node-file-upload-download-example。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:NodeJs实现简易WEB上传下载服务器 - Python技术站