Javascript Nodejs发布文件

Javascript Nodejs发布文件,javascript,html,node.js,Javascript,Html,Node.js,我试图上传一个文件从网页到我的后端,但没有发生任何事情。这就是我所做的: 以下是html文件中的表单: <form action="/api/bulk" method="POST" enctype="multipart/form-data"> <div style="width: 200px"> <input type="file

我试图上传一个文件从网页到我的后端,但没有发生任何事情。这就是我所做的:

以下是html文件中的表单:

<form action="/api/bulk" method="POST" enctype="multipart/form-data">
    <div style="width: 200px">
        <input
            type="file"
            id="user_group_logo"
            class="custom-file-input"
            accept=".xlsx, .xls, .csv"
            name="file"
        />
        <label id="user_group_label" for="user_group_logo">
            <i class="fas fa-upload"></i>&nbsp;Choose a file...
        </label>
        <button class="btn btn-primary" type="submit">Upload</button>
        <div class="text-center"></div>
        <div class="text-center mt-2"></div>
    </div>
</form>
下面是控制器方法,它应该将文件上传到/uploads文件夹

var multer = require('multer');

const storage = multer.diskStorage({
    destination: './uploads',
});

const upload = multer({
    storage: storage,
});


exports.postBulk = async (req, res) => {
    try {
        console.log('test');
        upload(req, res, (err) => {
            if (err) {
                console.log('error');
            } else {
                console.log(req.file);
                res.send('test-req.file');
            }
        });
    } catch (err) {
        res.status(404).json({
            status: 'fail',
            message: err.message,
            attention: 'Cannot verify the CSV file. Call support!',
        });
    }
};
我在控制台中既没有收到消息,也没有以某种方式“访问”该方法(至少在尝试上载文件时,我应该得到一个“测试”)。 有什么想法吗?

试试这个

const express=require('express');
const router=express.router();
const multer=require('multer');
const storage=multer.diskStorage({
目的地:'./上传',
});
const upload=multer({
存储:存储,
});
const postBulk=async(请求、恢复)=>{
试一试{
console.log(请求文件);
请求状态(200).json({})
}捕捉(错误){
res.status(404).json({
状态:“失败”,
message:err.message,
注意:'无法验证CSV文件。请致电支持!',
});
}
};
router.post(`/api/bulk`,upload.single('file'),postBulk)试试这个

router.route('/api/bulk').post(upload.single('file'),modelController.postBulk);
上传是您的持续保持multer配置 .single用于单个文件上载,.array用于多个文件上载。
请检查控制器中的req.file以通过表单上传文件

客户端的响应是什么?@JayadeepKM如果您的意思是:查看它,您似乎需要调用upload.single()或上传对象上的其他函数之一。不过我不熟悉在服务器上使用node。@BogdanDoncea看起来客户端是在发出GET请求而不是POST。您应该正在调试客户端代码。服务器端看起来不错,我试过了,但什么也没发生。我的“postBulk”方法似乎没有被调用。我在try-catch中放了一个“console.log('test'),在上传文件时它并没有显示在控制台中,所以我想应该还有另一个问题,我试过了,但什么也没发生。我的“postBulk”方法似乎没有被调用。我在try-catch中放了一个“console.log('test'),在上传文件时它不会显示在控制台中,所以我认为应该还有另一个问题
router.route('/api/bulk').post(upload.single('file'),modelController.postBulk);