почему html данные форм и загрузка файлов печатаются неопределенно в nodejs с использованием cloudinary? - PullRequest
0 голосов
/ 25 января 2020

Привет всем Я новичок в node.js и пн goose. Моя повестка дня - отправить данные формы HTML и загрузить файл на node.js одновременно. Я хочу сохранить изображение в Cloudinary. Как только данные достигли сервера. Мне нужно сохранить данные формы и URL изображения и publi c URL ID в пн goose. Потому что я буду использовать этот URL-адрес изображения для отображения изображения в передней части и опубликовать идентификатор URL c для удаления изображения в Cloudinary. Но я упомянул точный идентификатор поля в node.js, хотя я получаю неопределенное значение в Nodejs. Может кто-нибудь мне помочь? Заранее спасибо ... Я приложил код ниже.

.js file:

 const express = require('express');

const multer = require('multer');

const cloudinary = require('cloudinary');

const cloudinaryStorage = require('multer-storage-cloudinary');

const path = require('path');

const router = express.Router();


cloudinary.config({
   cloud_name:  "xyz",
   api_key: "kxyz",
   api_secret: "xyz"
});

const storage = cloudinaryStorage({
   cloudinary: cloudinary,
   folder: "tutorialImages",
   allowedFormats: ["jpg", "png"],
   transformation: [{ width: 1500, height: 500, crop: "limit" }]
});

const parser = multer({ storage: storage });



router.post('/create',parser.single("file"),(req, res) => {

   console.log(req.body.title);  // I'm getting undefined here
   console.log(req.body.body);    //  I'm getting undefined here
  
      console.log("from cloudinary");
 
      console.log(req.file)   //  I'm getting undefined here

      const image = {};
      image.url = req.file.url;
      image.id = req.file.public_id;

       console.log(image);   //  I'm getting undefined here


      const newPost = new post({
       
         title: req.body.title,
         body: req.body.body,
         url:image.url,        // To display the image this url will be used in front end
         urlId:req.file.public_id;  // To delete the image from cloudinary l
      });

      newPost.save().then(saveData => {

         res.redirect('/admin/posts');
      }).catch(err => {
         //res.render('admin/posts/create',{error:err.errors});
         console.log(err);
      });


});

module.exports = router;
.handlebars file:


 <form action="/admin/posts/create" method="post"  enctype="multipart/form-data">

    <div class="form-group">
        <label for="title">Title</label>
        <input type="text" value="{{title}}" name="title" id="title" class="form-control" placeholder="Enter Title">
    </div>

    <div class="form-group">
        <label for="file">File Upload</label>
        <input type="file" name="file" id="file" class="form-control">
    </div>

   
    <div class="form-group">
        <label for="body">Description</label>
        <textarea cols="30" rows="10" name="body" id="body" class="form-control" placeholder="Enter description"
            wrap="virtual">{{body}}</textarea>
    </div>

    <button type="submit" class="btn btn-primary">Submit</button>

</form>
...