I have passed a multipart form from HTML but on backend it doesn’t show up. I am posting all my files in the order of execution:
HTML form:
<form class="d-f-r" action="/mechanical/add_cad" method="POST" enctype="multipart/form-data">
<input type="file" name="file" class="upload-box" required>
<input id="version_number" type="number" name="iteration" placeholder="Version No."
required>
<input id="remarks" type="text" name="remarks" placeholder="Remarks">
<input type="submit" value="Upload">
</form>
index.js
const express = require('express');
const router = express.Router();
// some get and post requests
router.use('/mechanical', require('./mechanical'));
// some more get and post requests
module.exports = router;
mechanical.js
const express = require('express');
const router = express.Router();
const mechanicalController = require('../controller/mechanicalController');
router.post('/add_cad' ,mechanicalController.add_cad);
module.exports = router;
mechanicalController.js
const azure = require('azure-storage');
const CAD = require('../models/cad');
const sponsor = require('../models/sponsors');
module.exports.add_cad = function (req, res) {
const cad = new CAD();
CAD.uploadedLogo(req, res, async function (err) {
console.log(req.file.originalname, '\n', req.body);
var blobService = azure.createBlobService();
var containerName = 'cad';
blobService.createBlockBlobFromLocalFile(containerName, `${req.file.originalname}`, `${req.file.path}`, function (err, result, response) { });
var cadUrl = blobService.getUrl(containerName, `${req.file.originalname}`);
cad.remarks = req.body.remarks;
cad.iteration = req.body.iteration;
cad.location = cadUrl;
cad.posted_by = req.user.user;
cad.save();
res.redirect('back');
});
};
cad.js (my schema)
const mongoose = require('mongoose');
const multer = require('multer');
const path = require('path');
const LOGO_PATH = path.join('/assets/imgs/sponsors');
const CADSchema = new mongoose.Schema({
iteration: {
type: Number,
required: true,
},
remarks: {
type: String,
},
location:{
type: String,
required: true
},
posted_by:{
type: String,
required: true
}
}, {
timestamps: true
});
let storage = multer.diskStorage({
destination: function (req, file, cb) {
console.log(LOGO_PATH);
cb(null, path.join(__dirname, '..', LOGO_PATH));
},
filename: function (req, file, cb) {
cb(null, file.originalname);
}
});
CADSchema.statics.uploadedLogo = multer ({storage: storage}).single('location');
const CAD = mongoose.model('cad_list', CADSchema);
module.exports = CAD;
I have been trying to debug this for a few days now with no progress.
Please help me out. Let me know if you need any additional information.