nodejs文件上传组件multer使用

多图上传,发送端:

var express = require('express')
var rp = require('request-promise')

var fs = require("fs");

var app = express()

app.get('/send', function(req, res, next) {
    var options = {
        method: 'POST',
        uri: 'http://127.0.0.1:3000/profile',
        formData: {
            avatar: [fs.createReadStream("./ad.jpg"), fs.createReadStream("./222.png")]
        },
        headers: {
            // 'content-type': 'application/x-www-form-urlencoded'
        }
    };

    rp(options)
        .then(function(body) {
            // POST succeeded... 
            res.send(body);
        })
        .catch(function(err) {
            // POST failed... 
            res.send(err);
        });
});


app.listen(3001);

接收端:

var express = require('express')
var multer = require('multer')
var _ = require("lodash");

var app = express()
var storage = multer.diskStorage({
    //设置上传后文件路径,uploads文件夹会自动创建。
    destination: function(req, file, cb) {
        cb(null, './uploads')
    },
    //给上传文件重命名,获取添加后缀名
    filename: function(req, file, cb) {
        var fileFormat = (file.originalname).split(".");
        cb(null, file.fieldname + '-' + Date.now() + "." + fileFormat[fileFormat.length - 1]);
    }
});

var fileFilter = function(req, file, cb) {
        cb(null, false);   //这里设置为false则直接拒绝上传了,实际使用应为true
    }
    //添加配置文件到muler对象。
var upload = multer({
    storage: storage,
    fileFilter: fileFilter
});


var up = upload.array('avatar');

app.post('/profile', function(req, res, next) {
    // req.file 是 `avatar` 文件的信息\
    up(req, res, function(err) {
        if (err) {
            // An error occurred when uploading 
            res.send(err);
            return
        }
        res.send("upload success");
        // Everything went fine 
    })
});


app.post('/profile2', function(req, res, next) {
    // req.file 是 `avatar` 文件的信息
    console.log(req.body);
    res.json({ "succ": true, "msg": "请求成功" });
});

app.listen(3000);

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏有困难要上,没有困难创造困难也要上!

Cloud Foundry 运行bosh create-env时报错: TLS handshake timeout

3619
来自专栏散尽浮华

docker pull下载镜像报错Get https://registry-1.docker.io/v2/library/centos/manifests/latest:..... timeout

使用docker pull从镜像仓库拉取镜像时报错如下: [root@docker-registry ~]# docker pull centos Using ...

963
来自专栏散尽浮华

nginx通过https方式反向代理多实例tomcat

案例说明: 前面一层nginx+Keepalived部署的LB,后端两台web服务器部署了多实例的tomcat,通过https方式部署nginx反向代理tomc...

3076
来自专栏繁花云

[记录]常用shell代码段

700
来自专栏bboysoul

Koadic的安装和使用

Koadic是DEFCON分型出来的一个后渗透工具,主要通过vbscript、jscript进行大部分操作 废话不多说开始演示

875
来自专栏蓝天

Kafka错误“Network is unreachable”和“larger than available brokers”

确定Kafka安装和启动正确,ZooKeeper可以查到所有的Brokers,但执行: kafka-topics.sh --create --zookeep...

843
来自专栏IT综合技术分享

使用namecheap证书进行配置htmls安全访问

$ sudo vim /etc/apache2/sites-enabled/default-ssl.conf

1164
来自专栏Django Scrapy

python3 邮箱相关邮箱的服务

邮箱的服务 POP 协议 邮局协议(Post Office Protocol,简称POP),POP是第一个用于下载邮件的协议,POP 协议的最新版本是第三版,也...

31010
来自专栏西安-晁州

nginx配置样例

简单的nginx配置如下,包含了静态文件配置、websocket、socket.io的配置: user nobody; worker_processes 3;...

3060
来自专栏Golang语言社区

golang简单获取上传文件大小的实现代码

package main import ( "fmt" "io" "net/http" "log" "os" ) // ...

3607

扫码关注云+社区