繁体   English   中英

Postman 对 NodeJS 服务器的发布请求没有给我文件属性

[英]Postman Post request to NodeJS server does not give me the files properties

早上好。 我正在开发一个带有项目的投资组合应用程序。 我做了一个 mongoDB 数据库和一个 NodeJS 并表达了与这个数据库的连接。 我正在做一个 controller 的方法允许我将图像上传到数据库。 我做了这个方法,但是当我将它与PostMan一起使用时,图像被上传到我指定的文件夹,但是文件arguments没有出现,我需要然后上传到数据库。

我上传代码

Controller

uploadImage: function(req, res){
    var projectId = req.params.id;
    var fileName = "Imagen no subida...";

    if(req.files){
        return res.status(200).send({
            files: req.files
        });
    }else{
        return res.status(200).send({
            message: fileName
        });
    }
}

路线

 'use strict'

var express = require('express');
var ProjectController = require('../controllers/project');

var router = express.Router();

var multipart = require('connect-multiparty');
var multipartMiddleware = multipart({ uploadDir: './uploads' });

router.get('/home', ProjectController.home);
router.post('/test', ProjectController.test);
router.post('/save-project', ProjectController.saveProject);
router.get('/project/:id', ProjectController.getProject);
router.get('/projects', ProjectController.getProjects);
router.put('/project/:id', ProjectController.updateProject);
router.delete('/project/:id', ProjectController.deleteProject);
router.post('/upload-image/:id', multipartMiddleware ,ProjectController.uploadImage);

module.exports = router;

应用程序.js

'use strict'

var express = require('express');
var bodyParser = require('body-parser');

var app = express();

// cargar archivo Rutas
var routes = require('./routes/project');

// Middlewares
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());

// CORS

// Rutas
app.use('/api', routes);

// exportar
module.exports = app;

PostMan

我使用表单数据并添加图像。

回复:

{
  "files": {}
}

我认为在 JSON 文件中,有不同的参数可以将图像上传到数据库,例如 filePath、fileName ...

提前致谢

我认为应该是req.files.file而不是req.files

如果req.files.file不存在,尝试使用console.log(req)console.log(req.files)来跟踪文件


更新

检查 postman 标题部分中的 Content-Type 是否为"multipart/form-data"

在此处输入图像描述

然后您可以在req.files.image中找到您的文件,就像您在form-data body 部分中将其命名为image

希望能帮助到你

谢谢您的回答。 我做了这两件事,但是当我做console.log(req.files)时,响应是{} ,当我做console.log(req.files.file)时,响应是undefined 我不知道会发生什么,我使用的是 .jpg 扩展图像。

再次谢谢你

谢谢你。 我向您发送 PostMan 请求的图像。 我将您发送到 i.stack 中,因为这是我发送图像的唯一方法。 [:[[1]: https://i.stack.imgur.com/NHDog.png][1]][1]

编码:

// Multer
const storage = multer.diskStorage({
    destination: function(req, res, cb){
        cb(null, './uploads')
    },
    filename: function(req, file, cb){
        cb(null, file.fieldname + "-" + Date.now())
    }
})
const upload = multer({ storage: storage });

function:

uploadImage: function(req, res, next){
    console.log(req.file);
}

请求:

router.post('/upload-image/:id', upload.single('image'), ProjectController.uploadImage);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM