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")
    }
})
原文地址:https://www.cnblogs.com/rose-sharon/p/11692553.html