本篇,我们介绍下express中 实现文件上传。
安装multiparty模块 npm install multiparty --save
引入 multiparty模块, var multiparty= require('multiparty');
。。。
05_fileupload.js
//05_fileupload.js
//介绍 express中 获取http post 图片 multipart数据和普通表单域数据
var fs=require('fs');
var express=require('express');
var bodyParser = require('body-parser');
//var session = require("express-session");
var multiparty = require('multiparty');
var app = express();
//设置 express模板引擎为 ejs
app.set("view engine","ejs");
//设置模板的位置 ( 缺省位置也是 __dirname + '/views')
app.set('views', __dirname + '/views');
//配置body-parser中间件
// // parse application/x-www-form-urlencoded
// app.use(bodyParser.urlencoded({ extended: false }));
// // parse application/json
// app.use(bodyParser.json());
app.get("/",function (req,res) {
res.send('ok');
});
app.get("/uploadImg",function (req,res) {
res.render("uploadImg.ejs");
});
app.post("/uploadImg",function (req,res) {
var form = new multiparty.Form();
form.uploadDir='./upload'; //上传图片保存的地址 目录必须存在
form.parse(req, function(err, fields, files) {
//fields 表示普通表单域参数, files表示文件参数
console.log(fields); //{ fileType: [ 'idCard' ] }
console.log(files);
console.log(fields.fileType[0]);
// { file:
// [ { fieldName: 'file',
// originalFilename: '3.png',
// path: 'upload\\nJbGF0O5nEpEM2oDSDtiAnPp.png',
// headers: [Object],
// size: 17997 } ]
// }
var fileType=fields.fileType[0];//获取普通表单参数
// //console.log(files.file[0].path);
var orgFilename=files.file[0].originalFilename;
// files.file[0].path= form.uploadDir+"/"+orgFilename;//原始文件名
//文件上传后,给文件重命名为原上传文件名。
fs.rename(files.file[0].path,form.uploadDir+"/"+orgFilename,function (err) {
if (err) throw err;
console.log('renamed complete');
});
console.log("fileType: "+fileType);
// ./upload/3.png 存入数据库中为: /upload/3.png
console.log("filePath: "+form.uploadDir+"/"+orgFilename);
res.send('ok');
});
});
app.listen(3000);


阅读排行


Copyright © 叮叮声的奶酪 版权所有
备案号:鄂ICP备17018671号-1