Node-文件上传
使用nodejs express 实现文件上传
html 代码部分
<html> <head> <title>文件上传表单</title> <link rel="stylesheet" href="public/css/home.css"> </head> <body> <div class="upload-wrap"> <h3 class="title">文件上传:</h3> <form action="/file/upload" method="post" enctype="multipart/form-data"> <input class="select" type="file" name="image" /> <br /> <input class="btnsub" type="submit" value="上传图片" /> </form> </div> <div class="static"> <span class="test">静态资源测试</span> <div class="bgcolor"></div> <img src="public/image/car.jpg" alt=""> </div> <script src="public/js/home.js"></script> </body> </html>
main.js 代码部分
Multer是 Express 官方推出的,用于Node.jsmultipart/form-data请求数据处理的中间件。
它基于busboy构建,可以高效的处理文件上传,但并不处理multipart/form-data之外的用户请求。
使用步骤 :
安装 : npm install multer --save
API :
fieldname - 表单提交的文件名(input控件的name属性)
originalname - 文件在用户设备中的原始名称
encoding - 文件的编码类型
mimetype - 文件的Mime类型
size - 文件的大小
destination - 文件的保存目录(DiskStorage)
filename - 文件在destination中的名称(DiskStorage)
path - 上传文件的全路径(DiskStorage)
buffer - 文件对象的Buffer(MemoryStorage)
var express = require('express'); var app = express(); var fs = require("fs"); var multer = require('multer'); app.use('/public', express.static('public')); app.use(multer({ dest: '/tmp/' }).array('image')); app.get('/', function (req, res) { res.sendFile(__dirname + "/" + "index.html"); }) app.post('/file/upload', function (req, res) { console.log(req.files,'打印文件信息') fs.readFile(req.files[0].path, function (err, data) { // 将取得文件写入到data/img目录中去 fs.writeFile(__dirname+'/'+'data/img/'+ req.files[0].originalname,data, function (err) { if (err) { console.log(err); } else { response = { message: 'FILE UPLOADED SUCCESSFULY', filename: req.files[0].originalname }; } res.json(response) // res.end(JSON.stringify(response)); }); }); }) app.listen(8080, function (err) { if(err){ console.log("服务启动失败") }else{ console.log("应用实例,访问地址为 http://localhost:8080") } })