Home > Article > Web Front-end > nodejs implements file upload based on express
This article mainly introduces the method of nodejs to implement file upload based on express. It analyzes the specific steps and related operation skills of nodejs based on express framework to implement file upload function based on the example. Friends who need it can refer to it. I hope it can help. Everyone.
When I upload files, I use express's multiparty. Of course, it can also be implemented using the connect-multiparty middleware, but the official does not seem to recommend the use of the connect-multiparty middleware. Without further ado, let’s look at the code below.
Steps:
(1) Use express to create a project. The jade template engine is used by default, but I am still used to html, so I changed it to html template.
(2) In the project directory, install the necessary components through npm install multiparty.
(3) Modify views/index.html and add a file upload form.
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>上传文件</title> </head> <body> 上传文件 <form method='post', action='/file/uploading', enctype='multipart/form-data'> <input type="file" name="inputFile"> <input type="submit" value="上传"> </form> </body> </html>
(4) Modify routes/index.js to implement the background code for uploading pages and uploading responses.
var express = require('express'); var router = express.Router(); var multiparty = require('multiparty'); var util = require('util'); var fs = require('fs'); /* 上传页面. */ router.get('/', function(req, res, next) { //res.render('./views/index'); res.sendfile('./views/index.html'); }); /* 上传 */ router.post('/file/uploading', function(req, res, next) { /* 生成multiparty对象,并配置上传目标路径 */ var form = new multiparty.Form(); /* 设置编辑 */ form.encoding = 'utf-8'; //设置文件存储路劲 form.uploadDir = './public/files'; //设置文件大小限制 form.maxFilesSize = 2 * 1024 * 1024; // form.maxFields = 1000; //设置所有文件的大小总和 //上传后处理 form.parse(req, function(err, fields, files) { var filesTemp = JSON.stringify(files, null, 2); if(err) { console.log('parse error:' + err); }else { console.log('parse files:' + filesTemp); var inputFile = files.inputFile[0]; var uploadedPath = inputFile.path; var dstPath = './public/files' + inputFile.originalFilename; //重命名为真实文件名 fs.rename(uploadedPath, dstPath, function(err) { if(err) { console.log('rename error:' + err); }else { console.log('rename ok'); } }) } res.writeHead(200, {'content-type': 'text/plain;charset=utf-8'}); res.write('received upload:\n\n'); res.end(util.inspect({fields: fields, files: filesTemp})) }) }) module.exports = router;
Related recommendations:
php3.2 to achieve multi-file upload
File upload extension using jQuery
Introduction to the basics of php file upload
The above is the detailed content of nodejs implements file upload based on express. For more information, please follow other related articles on the PHP Chinese website!