Javascript Nodejs发布文件
我试图上传一个文件从网页到我的后端,但没有发生任何事情。这就是我所做的: 以下是html文件中的表单: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
<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> 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);