#select #input #multer
Вопрос:
Я искал это, но не мог найти ответа. Я задаю здесь вопрос, кто-то может подтвердить это : можно ли использовать тег select и некоторые параметры внутри, с помощью multer вместо типа ввода=»файл» ?
Я хочу «загрузить» изображение, уже присутствующее в папке img моего проекта node/express с помощью multer. Звучит любопытно, я знаю, это потому, что моему клиенту нужно обновить свой проект, и я не хочу все менять…
Ниже приведен некоторый код, который работает :
<form method="POST" action="/stories" enctype="multipart/form-data" class="col s12 content add-form">
...
<div class="row">
<h5>Your image</h5>
<div class="input-field">
<input type="file" id="upload-images" name="myFile">
</div>
</div>
...
</form>
Ниже моей безумной идеи, лол :
<form method="POST" action="/stories" enctype="multipart/form-data" class="col s12 content add-form">
...
<div class="row">
<h5>Pick a predefined image</h5>
<label for="upload-attir-images">Pick a predefined image:</label>
<select class="input-field add-img-select" id="upload-attir-images">
<option value="0">Select an image</option>
<option name="myFile" value="/img/animals.jpg">Animals</option>
</select>
</div>
...
</form>
На случай, если вам нужно взглянуть на мультера (я не думаю, что проблема исходит оттуда, но кто знает..)
const storage = multer.diskStorage({
destination: './public/uploads/',
filename: function (req, file, cb) {
cb(null, file.fieldname '-' Date.now() '-' file.originalname);
}
});
// Init Upload
const upload = multer({
storage,
// limits: { fileSize: 30000000 }
}).single('myFile')
module.exports = upload
Форма процесса моего маршрута :
router.post('/stories', ensureAuth, (req, res, next) => {
upload(req, res, async function (error) {
try {
const stories = await Story.find({ user: req.user.id }).lean()
... // some crazy work between req.user / req.body and req.file
req.body.file = req.file
const file = req.file
if (!file) {
res.redirect('/dashboard')
return next(error)
} else {
await Story.create(req.body)
... / some work to send push notfications
res.render('dashboard', {
name: req.user.firstName,
stories
})
}
} catch (error) {
console.error(error)
res.render("error/500")
}
})
})
And the tree architecture of my projet using node/express :
..
> public
> css
> js
> img
> uploads
> routes
> views
app.js
..