node + express4 + multiparty 实现文件上传至服务器

[ TOC ]

原因:

因为最近在开发一个基因比对的一个项目,需要将本地文件上传至服务器,然后再读取其中的数据与数据库中的数据进行比对,计算出相似度。

开发软件

Mac + webstrom(2017.1.3) + node(v8.2.0)

实现过程

step1:
打开webstrom新建一个空项目,命名为upload,在Terminal中输入如下命令:

npm init(然后一路enter)

npm install express --save-dev
npm install ejs --save-dev
npm install fs --save-dev
npm install multiparty --save-dev

step2:
创建文件目录,并在views文件夹下面添加index.html文件,如下图所示:

upload
....node_modules
....uploads
....views
    ....index.html
....app.js
....package.json
....package-lock.json

step3:
编写app.js文件

//加载库文件
var express = require('express'),
    path = require('path'),
    ejs = require('ejs'),
    fs = require('fs'),
    multiparty = require('multiparty'),
    app = express();

//设置模板引擎
app.engine('.html', ejs.renderFile);
app.set('view engine', 'html');
//设置模板目录
app.set('views', path.join(__dirname, 'views'));

//获取index.html页面
app.get('/', function (req, res) {
    res.render('./index');
});

app.post('/upload', function (req, res) {
    var form = new multiparty.Form({uploadDir: './uploads'});
    form.parse(req, function(err, fields, files) {
        var fileOriginalFilename = files.thumbnail[0].originalFilename;
        var filePath = files.thumbnail[0].path;
        var dstPath = './uploads/' + fileOriginalFilename;
        fs.rename(filePath, dstPath, function (err) {
            if (err) {
                console.log('rename error: ' + err);
            } else {
                console.log('rename ok');
            }
        });
        res.send('upload success');
    });
});

//创建web服务器,访问"http://localhost:3002"
var server = app.listen(3002, function () {
    var host = server.address().address;
    var port = server.address().port;
    console.log('App listening at http://%s%s', host, port);
});

step4:
编写index.html文件




    
    upload


//注意此处name="thumbnail",与step3中"files.thumbnail[0].fieldName;",thumbnail要一致

到此已经全部完成,在Terminal中输入node app.js即可启动服务器,上传的文件在uploads文件夹中

Github 源码

https://github.com/SevenTrap/upload

你可能感兴趣的:(node + express4 + multiparty 实现文件上传至服务器)