expressjs / expressjs/multer

req.file returning Undefined on frontend, but with Insomnia returns correctly

Open
#1,237 4 comments 0 reactions 0 assignees View on GitHub
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

![image](https://github.com/expressjs/multer/assets/90097588/162407dc-9914-4ee3-9fea-22c3c2c30a30)

![image](https://github.com/expressjs/multer/assets/90097588/e6846af4-9904-4a59-b5f6-ce2bb6d7ebc7)

When sending the file from the front:
![image](https://github.com/expressjs/multer/assets/90097588/d82d4e98-bd5c-4546-aa7f-67a8078caf15)

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);
};
```

![image](https://github.com/expressjs/multer/assets/90097588/38a08141-9728-487e-9e76-d46d5908690b)
![image](https://github.com/expressjs/multer/assets/90097588/2e9d5ccb-fdc7-4cf7-9b07-5b26c48a3e15)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.