Hogyan tudom elfogadni pufferek cloudinary Sharp middleware?

szavazat
0

Elhelyezése előtt ezt a kérdést, úgy éreztem, egy kicsit megfélemlíteni, mert kapok rossz visszajelzést kérdésemre nem nagyon részletes. Próbáltam csinálni részletezett ahogy csak tudtam.

Cél

Sikeresen feltöltött képeket Cloudinary, de a cél nem az, hogy megmentse őket a szerverre. Ez küldeni őket memória Cloudinary felhő. Tehát én vagyok a multer csomagot, hogy küldje el a memóriában. Akkor én vagyok a hegyes csomagot, hogy átalakítsa, és végül ez a rendelkezésére álló updateMe útvonalon.

Mit próbáltam? Megpróbáltam küldő őket puffer használatával éles csomagot. Egyszer ez átméretezett, majd küldje át puffer, de talán csinálok rosszul konfigurációkat.

Azt is megjegyezte, mindkét irányban Megpróbáltam elküldeni az adatokat a két middleware.

Útvonal


router.patch(
  /updateMe,
  authController.protect,
  userController.uploadUserPhoto,
  userController.resizeUserPhoto,
  userController.updateMe
);

felhasználói vezérlő

//using the multer package
const multerStorage = multer.memoryStorage();

const multerFilter = (req, file, cb) => {
  if (file.mimetype.startsWith(image)) {
    cb(null, true);
  } else {
    cb(new AppError(Not an image! Please upload only images., 400), false);
  }
};

const upload = multer({
  storage: multerStorage,
  fileFilter: multerFilter
});

exports.uploadUserPhoto = upload.single(photo);

//using the sharp package to resize images
exports.resizeUserPhoto = async (req, res, next) => {
  if (!req.file) return next();

  req.file.filename = `user-${req.user.id}-${Date.now()}.jpeg`;

  sharp(req.file.buffer)
    .resize(200, 200)
    .toFormat(jpeg)
    .jpeg({ quality: 90 })
  // .toBuffer({ resolveWithObject: true }); //this is commented because I had no result using them
  // .toFile() // This one will save to local path to server

  next();
};

Eddig a pontig, ha console.log (req.file) kapok a puffer belül a tárgy, de úgy tűnik, hogy befolyásolja az éles csomagról, hogy ad nekem valami nyomot, hogy én vagyok használja jogtalanul. Megpróbáltam ott Docs, de nem találtam semmit, ami elmondja, hogy meg tudtam érteni, (talán a válasz ott van, de nem tudom megérteni azt).

// UpdateMe útvonal

exports.updateMe = catchAsync(async (req, res, next) => {

// validation functions go here

//**here I have even tried cloudinary.uploader.upload(req.file.buffer)... and nothing happens**

if (req.file) {
    const result = await cloudinary.uploader.upload(req.file.path, {
      use_filename: true,
      folder: `${req.user.id}/profile/`
    });
    filteredBody.photo = result.url;
  }
}

Bármilyen javaslatot, hogyan kell ezt sikeresen?

A kérdést 13/02/2020 23:53
a forrás felhasználó
Más nyelveken...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more