下面我将为你介绍一下“Node.js实现文件上传的示例”的完整攻略。
什么是文件上传
文件上传是指将本地的文件上传到服务器上的过程。在Web开发中经常要用到文件上传,比如用户上传头像、PDF文件以及其他文档等。
Node.js实现文件上传的示例
Node.js可以很方便地实现文件上传,需要用到第三方模块formidable
。下面是实现文件上传的步骤:
步骤1:安装formidable
可以使用npm安装formidable
模块,这里我们使用命令行进行安装:
npm install formidable --save
步骤2:引入formidable模块
在调用formidable
之前,需要先引入模块:
const formidable = require('formidable');
步骤3:创建formidable对象
创建一个formidable
对象,可以设置文件上传的一些参数,如上传目录、文件大小限制等等:
var form = new formidable.IncomingForm();
form.uploadDir = '/upload'; // 设置上传文件的目录
form.keepExtensions = true; // 保留后缀名
form.maxFieldsSize = 20 * 1024 * 1024; // 单个文件大小限制为20M
步骤4:监听request对象的data、end事件
form.parse(req, function (err, fields, files) {
if (err) {
res.json({
code: '00001',
msg: '上传图片失败'
})
return
}
// files为上传的文件信息
console.log(files);
res.json({
code: '00000',
message: '上传图片成功'
});
});
示例1:上传单个文件
下面是上传单个文件的示例代码:
app.post('/upload', function (req, res) {
//创建上传表单对象
var form = new formidable.IncomingForm();
//设置上传目录
form.uploadDir = './uploads';
//文件保留后缀名
form.keepExtensions = true;
//文件大小限制
form.maxFieldsSize = 20 * 1024 * 1024;
//监听上传事件
form.parse(req, function (err, fields, files) {
if (err) {
console.log('上传文件错误');
return;
}
console.log(files);
res.json({
code: '00000',
data: {
path: files.file.path //上传文件的路径
},
msg: '上传文件成功'
});
});
});
这样就可以处理单个文件的上传了。上传的文件会被保存在指定的目录下。
示例2:上传多个文件
如果需要上传多个文件,需要将form.multiples
设置为true
,并在form.parse
中处理所有文件:
app.post('/multi_upload', function (req, res) {
//创建上传表单对象
var form = new formidable.IncomingForm();
//设置上传目录
form.uploadDir = './uploads';
//文件保留后缀名
form.keepExtensions = true;
//文件大小限制
form.maxFieldsSize = 20 * 1024 * 1024;
//是否多文件上传
form.multiples = true;
//监听上传事件
form.parse(req, function (err, fields, files) {
if (err) {
console.log('上传文件错误');
return;
}
console.log(files);
var fileList = [];
//处理所有文件
if (Array.isArray(files.file)) {
for (var i = 0; i < files.file.length; i++) {
fileList.push(files.file[i].path);
}
} else {
fileList.push(files.file.path);
}
res.json({
code: '00000',
data: {
fileList: fileList //上传文件的路径
},
msg: '上传文件成功'
});
});
});
这样就可以处理多个文件上传了。如果上传的文件是多个,可以使用Array.isArray
方法进行判断,然后处理所有文件的路径。
以上就是Node.js实现文件上传的示例。需要注意的是,文件上传的安全性也需要考虑,上传的文件可能包含恶意内容,要保证服务器的安全性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Node.js实现文件上传的示例 - Python技术站