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 条评论
登录 后参与评论

相关文章

来自专栏Linux驱动

8.QT-对话框(模态与非模态)

1393
来自专栏iOS 开发杂谈

浅谈 iOS NSNotification

NSNotificationCenter 就相当于一个广播站,使用 [NSNotificationCenter defaultCenter] 来获取,NSNot...

923
来自专栏mukekeheart的iOS之旅

iOS学习——(转)多线程

转载自:iOS多线程全套:线程生命周期,多线程的四种解决方案,线程安全问题,GCD的使用,NSOperation的使用

772
来自专栏吴老师移动开发

【iOS 开发】WebViewJavaScriptBridge 实现原理

WebViewJavaScriptBridge 使用一个不可见的 iFrame 来触发消息传递, 应该是为了兼容 UIWebView 和 WKWebView。

1412
来自专栏iOSer成长记录

SDWebImage 源码阅读(缓存)

2173
来自专栏DannyHoo的专栏

在有TableView的页面一行代码收起键盘

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

1072
来自专栏進无尽的文章

多线程-线程间通信、线程安全问题

说到多线程同步问题就不得不提多线程中的锁机制,多线程操作过程中往往多个线程是并发执行的,同一个资源可能被多个线程同时访问,造成资源抢夺,这个过程中如果没有锁机制...

862
来自专栏Golang语言社区

53. Socket服务三次握手的示例 | 厚土Go学习笔记

什么是三次握手呢?这是服务器和客户端之间沟通的过程。 首先,客户端对服务器发送了条信息。 然后,服务端对客户端说,我收到了。 最后,客户端对服务端说,好的,我知...

3469
来自专栏nimomeng的自我进阶

了解和分析iOS Crash Report

翻译自苹果官方文档:Understanding and Analyzing Application Crash Reports

1102
来自专栏西二旗一哥

iOS - MitRegx

663

扫码关注云+社区