req.file returning Undefined on frontend, but with Insomnia returns correctly
- Dominant language
- JavaScript
- Stars
- 12.1k
- Forks
- 1.1k
- Avg merge
- 8d 2h
- Merged PRs (30d)
- 21
Description
Hello, I’m having trouble getting a client-side post to work, it turns out that with Insomnia, the file correctly goes up to the directory and returns all the file information. The code is currently like this
```
const express = require('express');
const app = express();
require('dotenv').config();
app.use('/uploads', express.static('uploads'));
app.use(express.urlencoded({ extended: true }));
const routes = require('./routes');
const cors = require('cors');
require('./config/mongoConfig');
app.use(cors());
app.use(express.json());
app.use(routes);
app.listen(3333);
```
upload.js
```
const multer = require('multer');
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, 'uploads/');
},
filename: (req, file, cb) => {
cb(null, file.originalname);
},
});
const upload = multer({ storage });
module.exports = upload;
```
routes
```
const express = require('express');
const routes = express.Router();
const upload = require('./upload');
const Document = require('./models/documentsData');
const documentsController = require('./controllers/uploadController');
// PDF
routes.post('/upload', upload.single('file'), async (req, res) => {
if (req.file) {
const file = req.file.filename;
await Document.create({
// title: title,
// degree : degree,
// subject : subject,
file: file,
});
res.send('Arquivo enviado com sucesso!');
console.log('arquivo passado: ' + req.file.filename);
} else {
console.log('arquivo passado: ' + req.file);
}
// const title = req.body.title;
// const degree = req.body.degree;
// const subject = req.body.subject;
});
routes.get('/files', documentsController.getFile);
routes.delete('/deleteFiles', documentsController.deleteFile);
module.exports = routes;
```
Insomnia


When sending the file from the front:

Frontend
```
const handleSubmitFile = async (e) => {
e.preventDefault();
const formData = new FormData();
formData.append('file', file);
// data.append('title', formData.title);
// data.append('degree', formData.degree);
// data.append('subject', formData.subject);
console.log(formData.get('file'));
const result = await apiDocument.post('/upload', formData, {
data: formData,
headers: {
'Content-Type': 'multipart/form-data',
},
});
console.log(result);
};
```


Contributor guide
Assessment
This issue has not been assessed yet.