本篇,我们介绍下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