Quiero almacenar la imagen cargada en una entrada html simple
<input
type="file"
name="thumbnail"
id="image-input"
accept="image/png, image/jpg, image/jpeg"
hidden
/>
Esto conduce a una solicitud de publicación cuando se envía
router.post('/dish/new',async (req,res) => {
let { name, desc, cost, isnonveg, thumbnail} = req.body;
fs.writeFile(path.join(__dirname,'../userdata/images/dishes','g.jpg'),thumbnail, ()=>{
console.log('image stored')
})
})
Quiero almacenar todo lo que el usuario cargue usando el node fs ¿Cómo puedo hacer esto? El enfoque que uso aquí simplemente almacena el nombre del archivo en lugar del archivo real.
si está utilizando express, puede agregar este atributo a la etiqueta de formulario enctype="multipart/form-data" . Luego, su imagen se enviará desde la interfaz. Para recibir la imagen en el servidor necesitas configurar un middleware llamado express-fileupload
var fileupload = require("express-fileupload");
luego puede registrar el middleware mediante app.use(fileupload()); en su archivo app.js
en su archivo de ruta
router.post('/something', async (req, res) => {
let image=req.files.fieldName
})
image.mv('./public/images/foldername/' + 'imageName' + '.jpg', (err) => {
if (err) {
console.log(err)
} else {
res.netirect('/)
}})
una vez que haya terminado cuando envíe su formulario, podrá ver la imagen cargada en su servidor /public/images/foldername .