【问题标题】:Using postman to upload an image to nodejs backend service使用 postman 上传图片到 nodejs 后端服务
【发布时间】:2021-04-25 10:48:08
【问题描述】:

我是 nodejs 的新手,在测试从计算机上传图像的 post 方法期间,我在 postman 中收到这条消息,表明我的上传方法不存在

我的 server.js 代码是

const express = require('express');
const multer = require('multer');
const app = express();

//moddleware
app.use(express.urlencoded({extended: true}));
app.use(multer.json(''));

const PORT = process.env.PORT | 5000;   

var Storage = multer.diskStorage({
    destination: (req, file, callback) => {
        callback(null,"/images");
    },
    filename: (req, file, callback) => {
        callback(null,file.fieldname);
    }
});

var upload = multer({
    storage: Storage
    }).array('image',3);
//route
app.post('/', (req, res) => {});

app.post('/upload', (req, res) => {
    upload(req, res , err => {
        if (err) {
            return res.send('somthing went wrong');
        }
        return.res.send('file uploaded successfully');
    });
});

app.listen(PORT, () => {
console.log('Server running on PORT ${PORT}')
});

这是我的服务器响应

 [nodemon] 2.0.7                                                    
    [nodemon] to restart at any time, enter `rs`                       
    [nodemon] watching path(s): *.*                                    
    [nodemon] watching extensions: js,mjs,json                         
    [nodemon] starting `node server.js`                                
    Server running on PORT ${PORT}

谢谢

【问题讨论】:

    标签: javascript node.js angular postman


    【解决方案1】:

    我终于把代码弄到这里了

    // const bodyParser= require('body-parser');
    
    const multer = require('multer');
    
    const app = express();
    
    // app.use(bodyParser.urlencoded({extended: true}))
    
    const PORT = process.env.PORT | 5000;   
    
    var Storage = multer.diskStorage({
        destination: function (req, file, callback) {
          callback(null, 'images')
        },
        filename: function (req, file, callback) {
          callback(null, file.orignalname);
        }
    });
    var upload = multer({
     storage: Storage 
    }).array('image', 3);
    //route
    app.post('/', (req, res) => {});
    
    app.post('/upload', (req, res) => {
        console.log(req.file);
        upload(req, res , err => {
            if (err) {
                console.log(err);
                return res.send('somthing went wrong');
            }
            return res.send('file uploaded successfully');
        });
    });
    
    app.listen(PORT, () => {
        console.log('Server running on PORT ${PORT}')
    });
    

    谢谢你帮助我

    【讨论】:

    • 顺便说一句,我在项目中添加了一个名为“images”的新文件夹
    【解决方案2】:

    您的代码在上传路由 return.res.send 中有一些错误,这导致了问题。进行如下更改。

    const express = require('express')
    const bodyParser= require('body-parser')
    const multer = require('multer');
    const app = express();
    app.use(bodyParser.urlencoded({extended: true}))
    
    const PORT = process.env.PORT | 5000;   
    
    var Storage = multer.diskStorage({
        destination: function (req, file, cb) {
          cb(null, 'images')
        },
        filename: function (req, file, cb) {
          cb(null, file.fieldname + '-' + Date.now())
        }
    })
    var upload = multer({ storage: Storage }).array('image', 12)
    
    //route
    app.post('/', (req, res) => {});
    
    app.post('/upload', (req, res) => {
        upload(req, res , err => {
            if (err) {
                res.send('somthing went wrong');
            }
            res.send('file uploaded successfully');
        });
    });
    
    app.listen(PORT, () => {
        console.log('Server running on PORT ${PORT}')
    });
    

    【讨论】:

    • 我试过你的代码,但仍然是同样的问题,我在方法的声明中遇到了问题,但我不知道具体在哪里。还有其他方法可以测试方法吗?
    猜你喜欢
    • 2017-11-18
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 2011-06-01
    相关资源
    最近更新 更多